<!DOCTYPE html>
<html lang="zh">
<head>
	<meta charset="utf-8" />
	<meta http-equiv="X-UA-Compatible" content="IE=edge" />
	<title>Android 开发技术周报</title>
	<meta name="viewport" content="width=device-width, initial-scale=1" />
	<!-- stylesheets -->
	<link href="https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en" rel="stylesheet">
	<link rel="stylesheet" href="/assets/css/bootstrap.min.css?v=775cc42b9a">
	<link rel="stylesheet" href="/assets/css/font-awesome.min.css?v=775cc42b9a">
	<link rel="stylesheet" type="text/css" href="/assets/css/hl-styles/monokai_sublime.css?v=775cc42b9a">
	<link rel="stylesheet" type="text/css" href="/assets/css/screen.css?v=775cc42b9a">
	<script>
/*====================================================
  THEME SETTINGS & GLOBAL VARIABLES
====================================================*/
//  1. Disqus comment settings
var disqus_shortname = 'androidweekly'; // required: replace example with your forum shortname

//  2. Fixed navbar
var fixed_navbar = true;

//  3. Dark Color Scheme
var dark_color_scheme = true;

//	4. Mailchimp signup form Setting
// No need to change if you are using Ghost version 2.0.0 or above and using ghost inbuilt subscriber feature
// Keep it as it is, there will be no problem
var mailchimp_form_url = 'https://androidweekly.us9.list-manage.com/subscribe?u=3f24a71686f577759d1824501&id=013e702756';
var success_message = "Please check your inbox and confirm your email address. Thanks!";
</script>
    <meta name="description" content="Write the code, Change the world" />
    <link rel="shortcut icon" href="/favicon.png" type="image/png" />
    <link rel="canonical" href="https://androidweekly.io/" />
    <meta name="referrer" content="no-referrer-when-downgrade" />
    <link rel="next" href="https://androidweekly.io/page/2/" />
    
    <meta property="og:site_name" content="Android 开发技术周报" />
    <meta property="og:type" content="website" />
    <meta property="og:title" content="Android 开发技术周报" />
    <meta property="og:description" content="Write the code, Change the world" />
    <meta property="og:url" content="https://androidweekly.io/" />
    <meta property="og:image" content="https://androidweekly.io/content/images/2018/11/home_cover.jpg" />
    <meta name="twitter:card" content="summary_large_image" />
    <meta name="twitter:title" content="Android 开发技术周报" />
    <meta name="twitter:description" content="Write the code, Change the world" />
    <meta name="twitter:url" content="https://androidweekly.io/" />
    <meta name="twitter:image" content="https://androidweekly.io/content/images/2018/11/home_cover.jpg" />
    <meta name="twitter:site" content="@inferjay" />
    <meta property="og:image:width" content="1920" />
    <meta property="og:image:height" content="600" />
    
    <script type="application/ld+json">
{
    "@context": "https://schema.org",
    "@type": "WebSite",
    "publisher": {
        "@type": "Organization",
        "name": "Android 开发技术周报",
        "logo": {
            "@type": "ImageObject",
            "url": "https://androidweekly.io/content/images/2018/01/apple-touch-icon-114x114.png",
            "width": 60,
            "height": 60
        }
    },
    "url": "https://androidweekly.io/",
    "image": {
        "@type": "ImageObject",
        "url": "https://androidweekly.io/content/images/2018/11/home_cover.jpg",
        "width": 1920,
        "height": 600
    },
    "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "https://androidweekly.io/"
    },
    "description": "Write the code, Change the world"
}
    </script>

    <script src="/public/ghost-sdk.min.js?v=775cc42b9a"></script>
<script>
ghost.init({
	clientId: "ghost-frontend",
	clientSecret: "6839f718fef8"
});
</script>
    <meta name="generator" content="Ghost 2.1" />
    <link rel="alternate" type="application/rss+xml" title="Android 开发技术周报" href="https://androidweekly.io/rss/" />
    <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>

<script type="text/javascript" async src="//cdn.jsdelivr.net/gh/cferdinandi/smooth-scroll@14.2.1/dist/smooth-scroll.min.js"></script>

<script type='text/javascript'>
      var _vds = _vds || [];
      window._vds = _vds;
      (function(){
        _vds.push(['setAccountId', '932c4c012f3c6ec1']);
        (function() {
          var vds = document.createElement('script');
          vds.type='text/javascript';
          vds.async = true;
          vds.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'dn-growing.qbox.me/vds.js';
          var s = document.getElementsByTagName('script')[0];
          s.parentNode.insertBefore(vds, s);
        })();
      })();
</script>

<style type="text/css">
    body {
    	font-family: 'Roboto', 'Helvetica Neue', 'Helvetica', 'Arial', 'sans-serif';
    }
    .post-entry p {
    	color: gray;
    }
    .card .card-header.no-image .featured-image-container {
      height: 200px!important;
    }
    .cover .container {
      padding-top: 250px;
      padding-bottom: 200px;
    }
    .cover-home .container {
      padding-top: 280px;
      padding-bottom: 80px;
    }
    .card .card-footer .share-wrap .share-link-wrap a.weibo:hover {
      background: #E42236;
    }
    .card .card-footer .share-wrap .share-link-wrap a.wechat:hover {
      background: #2F9833;
    }
    .card .card-footer .share-wrap .share-link-wrap a.qq:hover {
      background: #12B7F5;
    }
    .card .card-footer .share-wrap .share-link-wrap a.pocket:hover {
      background: #ED455B;
    }
    .share-wrap-single .share-link-wrap a.weibo {
      background: #E42236;
    }
    .share-wrap-single .share-link-wrap a.weibo:hover {
      color: #E42236;
      background: #FFFFFF;
    }
    .share-wrap-single .share-link-wrap a.wechat {
      background: #2F9833;
    }
    .share-wrap-single .share-link-wrap a.wechat:hover {
      color: #2F9833;
      background: #FFFFFF;
    }
    .share-wrap-single .share-link-wrap a.qq {
      background: #12B7F5;
    }
    .share-wrap-single .share-link-wrap a.qq:hover {
      color: #12B7F5;
      background: #FFFFFF;
    }
    .share-wrap-single .share-link-wrap a.pocket {
      background: #ED455B;
    }
    .share-wrap-single .share-link-wrap a.pocket:hover {
      color: #ED455B;
      background: #FFFFFF;
    }
    .widget .social li a:hover.weibo {
      background: #E42236;
    }
    .widget .social li a:hover.wechat {
      background: #2F9833;
    }
    .widget .social li a:hover.qq {
      background: #12B7F5;
    }
    .widget .social li a:hover.pocket {
      background: #ED455B;
    }
    .card .card-header.no-image .featured-image-container {
    	height: auto;
  	}
    .post.page .post-title {
        text-align: center;
    }
     .gay_friends_list {
      margin-top: 5em;
    }

    .gay_friends_list ul {
      list-style: disc;
      margin-left: 1.3em;
    }

    .gay_friends_list ul li {
      list-style: none;
      float: left;
      width: 25%;
      text-align: center;
      height: 25%;
      margin-bottom: 5em;
    }

    .gay_friends_list ul li a {
      display: block;
      width: 130px;
      height: 64px;
      -webkit-border-radius: 3px;
      -moz-border-radius: 3px;
      border-radius: 3px;
      // background-color: white;
    }
    .gay_friends_list ul li img:hover {
      -moz-box-shadow: -2px 4px 6px -2px rgba( 0, 0, 0, .10 ), 2px 4px 6px 2px rgba( 0, 0, 0, .05 );
      -webkit-box-shadow: -2px 4px 6px -2px rgba( 0, 0, 0, .10 ), 2px 4px 6px 2px rgba( 0, 0, 0, .05 );
      box-shadow: -2px 4px 6px -2px rgba( 0, 0, 0, .10 ), 2px 4px 6px 2px rgba( 0, 0, 0, .05 );
      -webkit-border-radius: 3px;
      -moz-border-radius: 3px;
      border-radius: 3px;
    }
    .gay_friends_list ul li img {
      width: 130px;
      height: 64px;
      padding: 0px;
      background-color: white;
      -webkit-border-radius: 3px;
      -moz-border-radius: 3px;
      border-radius: 3px;
      border: 1px solid rgba(153, 153, 153, 0.23);
    }
    .table, table {
        margin: 1.6em 0;
        max-width: 100%;
        width: 100%;
        background-color: transparent
    }

    .table td, .table th, table td, table th {
        padding: 8px;
        vertical-align: middle;
        text-align: left;
        line-height: 20px
    }

    .table td, .table th {
        border-top: 1px solid #dfe1e3
    }

    .table th {
        color: #7d878a
    }

    .table caption + thead tr:first-child td, .table caption + thead tr:first-child th,
    .table colgroup + thead tr:first-child td, .table colgroup + thead tr:first-child th,
    .table thead:first-child tr:first-child td, .table thead:first-child tr:first-child th {
        border-top: 0
    }

    .table tbody + tbody {
        border-top: 2px solid #dfe1e3
    }

    .table table table {
        background-color: #fff
    }

    .table tbody > tr:nth-child(odd) > td, .table tbody > tr:nth-child(odd) > th {
        background-color: #fafafa
    }

    .table.plain tbody > tr:nth-child(odd) > td, .table.plain tbody > tr:nth-child(odd) > th {
        background: 0 0
    }
	.side-panel ul {
       padding-left: 0px;
       list-style: none; 
    }

 	.ad-list ul {
       padding-left: 0px;
       list-style: none; 
    }
    
    .ad-list ul li {
        margin-bottom: 10px; 
    }

    .ad-list ul li img {
        height: auto;
    }
    
    .list-title {
    	text-align: center;
    }
   #post-ad-list-panel ul img {
    	height: 180px;
    }
    .description {
      font-size: 13px;
      color: gray;
      text-align: center;
      line-height: 20px;
    }

    #green-android-logo {
      height: 92px; 
    }

    .app-icon {
      width: 38px;
      position: relative;
    }

    .app-name {
      color: #464646;
      font-size: 12px;
      text-align: center;
      line-height: 16px;
      margin: 6px 0;
    }

    .app-name:hover {
      color: #FF5722;
    }

    .app-description {
      font-size: 10px;
      color: gray;
      line-height: 16px;
    }

    .app-list{
      text-align: center;
    }

    .app-list ul {
      padding-left: 0px;
      list-style: none;

    }

    .app-list ul li {
       margin-top: 8px;
       width: 46%;
       float: left;
       margin-left: 2%;
       margin-right: 2%;
    }

    .app-list ul li span {
      display: block;

    }

    .btn-link {
      color: white;
      margin-top: 5px;
      padding-left: 20px;
      padding-right: 20px;
      text-decoration: none;
      background-color: #FF5722;
    }

    .btn-link:hover {
      color: white;
      text-decoration: none;
      background-color: #DB3D0B;
    }

    .center {
      margin-left: 10%;
      margin-right: 10%;
    }

    .top {
      margin-top: 10px;
    }
    .bottom {
      margin-bottom: 10px;
    }
    #app-friend-link-logo {
      width: 30%;
      height: 30%;
    }
    #search-results a {
    	display: block;
    	width: 100%;
    	text-align: center;
    }
</style>
<script>
    var isShowAdList                      = true;
	var isShowPostAdList                = true;
    var isShowFuckGFWList 			  = true;
    var isShowDonateInfoList 		   = false;
    var isShowPostDonateInfoList 	 = true;
    var isShowJobsInfoList       		 = true;
    var isShowBookList 					  = true;
	var isShowEventList 				  = true;
    var isShowGreenAppList             = true;
    var isShowAppRecommendList    = true;
    var break_tag = "<br><br>";
    
var ad_list = {
    title: "",
    data: [
        {
            'title': "Vultr",
            'sub_title': "Vultr 高性能 VPS",
            'description': ",又来新年活动了，充 50刀 送 50 刀，注册既送 20 刀的活动，有羊毛就撸起来，建议东京、新加坡、美国硅谷机房，撸完后可以先 Ping 一下看速度，不满意删掉再撸。",
            'url': "https://www.vultr.com/?ref=7781737-4F",
            'img_url': "https://ws2.sinaimg.cn/large/006tNc79ly1fzcsu4hu56j308c06y0t3.jpg",
            isshow: false,
            ad_config: {
                category: "Host",
                action: "click",
                label: "vultr-50-20",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            'title': "全民云计算 爆款云服务器低至 2 折，1 核 1G ¥ 293元/年",
            'url': "https://promotion.aliyun.com/ntms/act/qwbk.html?userCode=j7dufdfe&utm_source=androidweekly.io&utm_medium=website",
            'description': "",
            'img_url': "https://ws4.sinaimg.cn/large/006tNc79ly1fz3t97qxrwj30go08cjrv.jpg",
            isshow: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "Aliyun-RightBar-aw",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
    	},
        {
            'title': "新客户无门槛领取总价值高达2775元代金券，每种代金券限量500张，先到先得。 ",
            'url': "https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=0a8e075b707cb3f9669f20fd65948011&from=console&utm_source=androidweekly.io&utm_medium=website",
            'description': "",
            'img_url': "https://ws2.sinaimg.cn/large/006tNc79ly1fz3o1v1gkjj30fk08c751.jpg",
            isshow: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "Tencent-Cloud-New-User-Voucher",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
    	},
        {
            'title': "「HenCoder Plus」Android 高级开发瓶颈突破系列课",
            'url': "https://plus.hencoder.com/?utm_source=androidweekly.io&utm_medium=website",
            'description': "用碎片化的时间，学习系统化内容；短期暴力提升，快速突破瓶颈。HenCoder Plus 作为一套全方位系统化的在线直播课程，开课两期以来，吸纳了来自 BAT、头条、滴滴等公司以及硅谷、台湾和日本的众多学员报名参加，并且众多学员在毕业一个月内先后入职阿里、腾讯、小米、头条等公司。其中一位学员拿到 80w+ 的年薪，多位学员年薪达到 45w 左右。",
            'img_url': "https://ws1.sinaimg.cn/large/006tKfTcly1g1n98u7dcqj30go0goagg.jpg",
            isshow: true,
            ad_config: {
                category: "AD",
                action: "click",
                label: "HenCoderPlus",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
    	},
        {
            'title': "成为深度学习工程师",
            'url': "http://t.cn/Eitg4HV",
            'description': "学习未来所需技能，挑战实战项目，获得行业知名企业的认可，从零开始成为人工智能、机器学习、无人驾驶车，网站开发、移动开发和数据分析领域的抢手人才。",
            'img_url': "https://ws4.sinaimg.cn/large/006tKfTcly1g1myvqphg6j30dw03caa8.jpg",
            isshow: true,
            ad_config: {
                category: "AD",
                action: "click",
                label: "Udacity-Deep-Learning-Course",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
    	},
        {
            'title': "众多精选正版软件，买正版，售后好，三折起",
            'url': "https://partner.lizhi.io/androidweekly/cp?utm_source=androidweekly.io&utm_medium=right_sidebar",
            'description': "",
            'img_url': "https://ws4.sinaimg.cn/large/006tKfTcgy1g1p6imeggbj30rs0rs75k.jpg",
            isshow: true,
            ad_config: {
                category: "AD",
                action: "click",
                label: "Lizhi-Software",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
    	},
        {
            'title': "趣谈 Linux 操作系统",
            'url': "http://gk.link/a/102Ju&utm_source=androidweekly.io&utm_medium=website",
            'description': "限时优惠 68 元，4 月 6 日恢复原价 99 元",
            'img_url': "https://ws2.sinaimg.cn/large/006tKfTcly1g1fz4g38loj30u01hdk40.jpg",
            isshow: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "GeekTime-Talk-Linux-OS",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
    	},
        {
            'title': "软件工程之美",
            'url': "http://gk.link/a/102iR&utm_source=androidweekly.io&utm_medium=website",
            'description': "限时优惠 68 元，3 月 2 日恢复原价 99 元",
            'img_url': "https://ws4.sinaimg.cn/large/006tKfTcly1g0bicm76gdj30u01hddir.jpg",
            isshow: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "GeekTime-Software-Enginnering-Beauty",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
    	},
        {
            'title': "Go 语言核心 36 讲",
            'url': "http://gk.link/a/102iQ&utm_source=androidweekly.io&utm_medium=website",
            'description': "拼团仅需 58 元，涨价倒计时 2 天，之后价格即将上涨至 99 元",
            'img_url': "https://ws3.sinaimg.cn/large/006tNc79ly1g03fvn1y10j30u01hdadf.jpg",
            isshow: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "GeekTime-Play-Spring-Bucket",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
    	},
        {
            'title': "玩转 Spring 全家桶",
            'url': "http://gk.link/a/102a3&utm_source=androidweekly.io&utm_medium=website",
            'description': "限时优惠 99 元，2 月 23 日恢复原价 129 元",
            'img_url': "https://ws3.sinaimg.cn/large/006tNc79ly1g03fvn1y10j30u01hdadf.jpg",
            isshow: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "GeekTime-Play-Spring-Bucket",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
    	},
        {
            'title': "重学前端",
            'url': "http://gk.link/a/10205&utm_source=androidweekly.io&utm_medium=website",
            'description': "限时优惠 68 元，1 月 26 日恢复原价 99 元",
            'img_url': "https://ws4.sinaimg.cn/large/006tNc79ly1fzctkslj0pj30u01hdk5l.jpg",
            isshow: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "GeekTime-Repeat-Front-end",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
    	},
        {
            'title': "玩转 Git 三剑客",
            'url': "https://time.geekbang.org/course/intro/145?code=WjH7CG5xMAAq%2FeXHZVu5nrlAp%2FXYHBO0B-K3icHxAAA%3D&utm_source=androidweekly.io&utm_medium=website",
            'description': "限时优惠 45 元，12 月 22 日恢复原价 68 元",
            'img_url': "https://ws3.sinaimg.cn/large/006tNbRwly1fy35dmcbx6j30u01he1k6.jpg",
            isshow: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "GeekTime-Git-Three-Swordsman",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
    	},
        {
            'title': "Android 开发高手课",
            'url': "https://time.geekbang.org/column/intro/142?code=CzZyMVt9D2DFD9KOOd%2FHWWCts5PGI7cAMhV4MJerI6c%3D&utm_source=androidweekly.io&utm_medium=website",
            'description': "",
            'img_url': "https://ws1.sinaimg.cn/large/006tNbRwly1fxxc6ssgh2j30u01hekjl.jpg",
            isshow: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "GeekTime-Android-Dev-Advanced",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
    	}]
};

var post_ad_list = {
    title: "",
    data: [
      {
            'title': "Mac 清理优化工具 MacBooster 限时特惠，终生版6折最低仅需 59 元",
            'url': "https://partner.lizhi.io/androidweekly/macbooster",
            'description': "",
            'img_url': "https://ws3.sinaimg.cn/large/006tNc79ly1g1vjtac7mij312c0a0jui.jpg",
            isshow: true,
            ad_config: {
                category: "AD",
                action: "click",
                label: "MacBooster-Post-Bottom-AD",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
      },
      {
            'title': "各种精选正版软件，买正版，售后好，三折起",
            'url': "https://partner.lizhi.io/androidweekly/cp",
            'description': "",
            'img_url': "https://ws4.sinaimg.cn/large/006tKfTcgy1g1p75ckqh1j312c0a0gmp.jpg",
            isshow: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "LiZhi-Post-Bottom-AD",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
      },
      {
            'title': "超低价享用 100+ 精选 Mac 应用",
            'url': "http://t.cn/EJVzlxV",
            'description': "免费试用7天，无需信用卡，随时取消",
            'img_url': "https://ws3.sinaimg.cn/large/006tKfTcly1g1f8rcpg3tj312c07sq5l.jpg",
            isshow: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "Steapp-Post-Bottom-AD",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
      },
      {
            'title': "中国年世界年-精选好书定价 3.9 折起，Prime 会员再享 8 折",
            'url': "http://t.cn/Eqtn2Zb",
            'description': "",
            'img_url': "https://ws4.sinaimg.cn/large/006tNc79ly1fz3t30bhxij315o08c77i.jpg",
            isshow: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "AMZ-Post-Books-AD",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
      },
    {
    	'title': "Amazon 图书",
    	'url': "https://www.amazon.cn/gp/promotion/landingpage/A21XVXNA2IQY2K?&tag=androidweekly-post-bottom-23&camp=356&creative=6388&linkCode=ur1&adid=1Q172DERPCX56NCE4RW4&",
   		'description': "18 万畅销好书，满 150 元减 50 元",
   		'img_url': "https://images-cn.ssl-images-amazon.com/images/G/28/cnbooks/event/2017JuneB150G50/xq-170531-72890-book._V509455889_.jpg",
    	 isshow: false,
    	ad_config: {
        	category: "AD",
        	action: "click",
        	label: "AmazonBookPostBottom",
        	value: "",
        	nodeid: "",
    	},
    	style: {
        	isRound: false
    	}
	}]
};

var fuck_gfw_list = {
    title: "开启新世界大门的🔑",
    data: [
      {
            'title': "AgentNEO",
            'sub_title': "稳定流畅的智能加速服务只为释放你的生产力",
            'description': "AgentNEO 是一家加拿大团队打造的一款智能加速服务，我们的目标是帮助尽可能多的人拥有更加自由、稳定的互联网环境",
            'url': "https://agentneo.io/?rc=2a76npue",
            'img_url': "https://ws2.sinaimg.cn/large/006tKfTcly1fqqzjt5i1sj30bg03iglq.jpg",
            isshow: true,
            ad_config: {
                category: "Host",
                action: "click",
                label: "AgentNEO",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
       {
            'title': "BandwagonHost",
            'sub_title': "Mass VPS hosting on Enterprise equipment",
            'description': "注册即送 10 刀，更有直连中国的线路仅需 3.99 刀一个月，年付只需 29 刀，使用优惠码 BWH1ZBPVK 再节省 6%",
            'url': "https://bwh1.net/aff.php?aff=133&pid=57",
            'img_url': "https://ww1.sinaimg.cn/large/006tNbRwly1ffe62qvivcj308g02st92.jpg",
            isshow: true,
            ad_config: {
                category: "Host",
                action: "click",
                label: "bandwagonhost",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            'title': "Vultr",
            'sub_title': "Vultr 高性能 VPS",
            'description': "Vultr 注册即送 30 刀，节点多，最便宜 2.5 刀一个月",
            'url': "https://www.vultr.com/?ref=706872",
            'img_url': "https://ww1.sinaimg.cn/large/006tNbRwly1ffe62qbnm4j308g02saa8.jpg",
            isshow: true,
            ad_config: {
                category: "Host",
                action: "click",
                label: "vultr",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            'title': "Linode",
            'sub_title': "SSD Cloud Hosting & Linux Servers",
            'description': "注册即送 10 刀，节点多，最便宜 5 刀一个月",
            'url': "https://www.linode.com/?r=9343985e91d6bd860b71f5284ea5c8f674f2775e",
            'img_url': "https://ww1.sinaimg.cn/large/006tNbRwly1ffe62qir5cj308g02swew.jpg",
        	isshow: true,
            ad_config: {
                category: "Host",
                action: "click",
                label: "linode",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            'title': "DigitalOcean",
            'sub_title': "Cloud computing designed for developers",
            'description': "注册即送 10 刀，节点多，最便宜 5 刀一个月",
            'url': "https://www.digitalocean.com/?refcode=ef15936ffa93",
            'img_url': "https://ww1.sinaimg.cn/large/006tNbRwly1ffe62qnb5ij308g02s0t1.jpg",
            isshow: true,
            ad_config: {
                category: "Host",
                action: "click",
                label: "digitalocean",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        }
    ]
};

var donate_info_list = {
    title: "捐赠",
    description: '如果你觉得 Android 开发技术周报对您有所帮助，请考虑对本周报捐赠支持。支持我把 Android 开发技术周报做的更好，帮助更多的人，金额随意，您的捐赠将用于支付服务器和邮件推送服务的费用。<a href="http://www.androidweekly.cn/donate/" target="_self">捐赠列表</a>',
    data: [{
            title: "支付宝",
            url: "",
            img_url: "https://ww3.sinaimg.cn/large/8a41f469gw1f663b29t6mj2074074q3g.jpg",
            img_syle: 'width: 152px; height: 152px;',
        	isshow: true
        },
        {
            title: "微信",
            url: "",
            img_url: "https://ww2.sinaimg.cn/large/006tNbRwgy1fdmcbdm8ghj3074074dh8.jpg",
            img_syle: 'width: 152px; height: 152px;',
            isshow: true
        },
        {
            title: "PayPal",
            url: "https://www.paypal.me/inferjay",
            img_url: "http://www.paypalobjects.com/webstatic/mktg/Logo/pp-logo-200px.png",
            img_syle: '',
            isshow: false
        }
    ]
};

var post_donate_info_list = {
    title: "捐赠",
    description: '如果你觉得 Android 开发技术周报对您有所帮助，请考虑对本周报捐赠支持。支持我把 Android 开发技术周报做的更好，帮助更多的人，金额随意，您的捐赠将用于支付服务器和邮件推送服务的费用。<a href="http://www.androidweekly.cn/donate/" target="_self">捐赠列表</a>',
    data: [{
            title: "支付宝",
            url: "",
            img_url: "https://ww3.sinaimg.cn/large/8a41f469gw1f663b29t6mj2074074q3g.jpg",
            img_syle: 'width: 214px; height: 214px;',
        	isshow: true
        },
        {
            title: "微信",
            url: "",
            img_url: "https://ww2.sinaimg.cn/large/006tNbRwgy1fdmcbdm8ghj3074074dh8.jpg",
            img_syle: 'width: 214px; height: 214px;',
            isshow: true
        }
    ]
};

var post_jobs_info_list = {
    title: "酷工作",
    data: [
     {
            title: "一条生活馆诚招高级 Android 开发工程师🆕",
            url: "http://www.androidweekly.cn/cool-jobs-info-20/",
            content: '上海／徐汇区桂林路／20-40k／不加班／其他该有的也全有／每月多500零花钱给你买零食',
            isshow: true
      },
     {
            title: "OPPO 诚招 Android 开发和Java后端工程师🆕",
            url: "http://www.androidweekly.cn/cool-jobs-info-19/",
            content: '深圳／南山区后海地铁站／20k ~ 40k / 双休 / 年终奖丰厚',
            isshow: true
      },
      {
            title: "快手诚招 Android 开发工程师",
            url: "http://www.androidweekly.cn/cool-jobs-info-18/",
            content: '北京／深圳／五道口／20-50k / 五险一金 / 16薪起 / 免费健身房',
            isshow: true
       },
       {
            title: "领英中国诚招 Android 工程师",
            url: "http://www.androidweekly.cn/cool-jobs-info-17/",
            content: '北京／东三环嘉铭中心(10号线团结湖)／20k~40k／双休／六险一金',
            isshow: false
       },
       {
            title: "北京明日虫洞科技有限公司诚招 Android 工程师",
            url: "https://github.com/hehonghui/the-jobs/blob/master/beijing/newsdog.md",
            content: '北京／十号线海淀黄庄（中关村大厦）／20k ~ 30k／五险一金／补充医疗／年底双薪／免费午餐和晚餐',
            isshow: false
        },
        {
            title: "步步高教育电子有限公司诚招 Android 应用工程师",
            url: "http://www.androidweekly.cn/cool-jobs-info-15/",
            content: '东莞／广东省东莞市长安镇／二线城市，临近一线/行业内有竞争力的薪资待遇/生活开支低/适合定居长期发展/表现优异有获得年终奖的机会',
            isshow: false
        },
        {
            title: "大疆创新诚招 Android 高级开发工程师/架构师",
            url: "http://www.androidweekly.cn/cool-jobs-info-14/",
            content: '深圳／高新南四路半导体设计大厦／20~50k / 六险一金／年终多薪／技术提升／企业文化 / 内部股',
            isshow: true
         },
        {
            title: "网易乐得诚招 Android 开发工程师",
            url: "http://www.androidweekly.cn/cool-jobs-info-13/",
            content: '北京／中关村软件园二期(西二旗地铁)／17k ~ 35k／五险一金／14薪+季度奖+年终奖／技术提升／团建／双休／弹性上班时间',
            isshow: true
         },
         {
            title: "郑州卓见软件科技有限公司诚招 Android 开发工程师",
            url: "http://www.androidweekly.cn/cool-jobs-info-11/",
            content: '郑州／7K-12K／六险一金／年终多薪／技术提升／企业文化／团建／双休／弹性上班时间／项目奖金／技术氛围浓厚／纯互联网公司／纯产品公司／优秀者薪资可面议',
            isshow: false
         },
         {
            title: "上海即果信息技术有限公司急招 Android 开发工程师（全职/实习）",
            url: "http://www.androidweekly.cn/cool-jobs-info-7/",
            content: '上海／五角场创智天地／20k ~ 30k／五险一金／双休／弹性上班时间',
            isshow: false
         },
         {
            title: "👉戳我查看更多招聘信息👈",
            url: "http://www.androidweekly.cn/cool-jobs",
            content: '更多招聘信息请查看「酷工作页面」',
            isshow: true
        }
    ]
};

var books = {
	title: "书",
	showCount: 4,
	data:[
        {
            title: "Android 应用安全防护和逆向分析",
            url: "https://amazon.cn/gp/offer-listing/B0788XV9WC/ref=as_li_tl?ie=UTF8&camp=536&creative=3200&creativeASIN=B0788XV9WC&linkCode=am2&tag=androidweekly-post-book-23&linkId=13ec02df709738e9e231ea2f335caac6",
            description: "本书全面介绍Android应用的安全防护方法与逆向分析技术，分为四篇：基础篇、防护篇、工具篇、操作篇，共26章。基础篇包括第1~7章，主要介绍移动应用安全的基础知识，包括Android中NDK开发知识、逆向中需要用到的命令、编译之后的apk包含的四类主要文件格式解析等。防护篇包括第8~14章，主要介绍移动应用安全防护的相关技术，包括混淆、签名校验、反调试检测等安全策略，Android应用升级权限、降低权限等，配置文件中的问题，应用签名机制，apk的加固策略，so文件的加固策略等。工具篇包括第15~19章，主要介绍逆向分析常用的工具以及使用场景，包括如何开启设备的总调试开关，反编译利器apktool、Jadx、Xposed、CydiaSubstrate等。操作篇包括第20~26章，主要介绍Android中的逆向分析技巧，包括静态方式和动态方式，介",
            img_url: "",
            tags: "Android,逆向,安全",
            isshow: true,
            isshowCover: true,
            isad: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
		{
            title: "无界面交互:潜移默化的 UX 设计方略",
            url: "http://t.cn/Rotrq7Z",
            description: "本书通过丰富的示例和生动的讲解，深刻揭示了当今屏幕至上的界面设计的种种怪象。本书呼吁将设计的重心由界面转向对用户个性化需求的关怀，并提出了无界面交互设计方略的三个原则以构建优质用户体验：贴合日常生活流程，做电脑的主人而非仆人，适应个体情况。",
            img_url: "",
            tags: "Design,UX",
            isshow: true,
            isshowCover: true,
            isad: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            title: "极简主义:风靡欧美的工作与生活理念",
            url: "http://t.cn/RotrQOG",
            description: "本书适合所有想提高做事效率、提升人生幸福感的人士阅读。如果你真的想简化繁重的工作事务和日常生活，请一定要记住：好方法往往最简单。",
            img_url: "",
            tags: "工作,生活",
            isshow: true,
            isshowCover: true,
            isad: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            title: "Gradle for Android 中文版",
            url: "http://t.cn/RotVOIb",
            description: "本书共分9章，依次介绍了 Gradle 的基础知识、基本自定义构建、依赖管理、创建构建 Variants、管理多模块构建、运行测试、创建 tasks 和插件、设置持续集成，以及高级自定义构建。",
            img_url: "",
            tags: "Android,Gradle",
            isshow: true,
            isShowCover: true,
            isad: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            title: "增长黑客实战",
            url: "http://t.cn/RotfVPF",
            description: "本书围绕硅谷前沿的增长黑客职业，讲解增长理念的树立、增长团队的组建、流程制度的创立、技术营销的运用等团队运营成功实战经验。本书适合希望成功创业的 CEO、公司经理、开发人员、产品经理和市场运营人员，以及任何有创意并且想创业的人。",
            img_url: "",
            tags: "运营,Growth Hacking",
            isshow: true,
            isshowCover: true,
            isad: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            title: "提问的智慧",
            url: "https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md",
            description: "本指南将教你如何正确的提问以获得你满意的答案。",
            img_url: "",
            tags: "提问",
            isshow: true,
            isshowCover: true,
            isad: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            title: "A Primer on Bézier Curves",
            url: "https://pomax.github.io/bezierinfo/zh-CN/",
            description: "一本讲解贝塞尔曲线的开源书",
            img_url: "",
            tags: "贝塞尔曲线",
            isshow: true,
            isshowCover: true,
            isad: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            title: "免费的编程中文书籍索引",
            url: "http://siberiawolf.com/free_programming/index.html",
            description: "本索引包含：国外程序员在 stackoverflow 推荐的程序员必读书籍，中文版；stackoverflow 上的程序员应该阅读的非编程类书籍有哪些？ 中文版；github 上的一个流行的编程书籍索引 中文版",
            img_url: "",
            tags: "OpenSource Book,Free",
            isshow: true,
            isshowCover: true,
            isad: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            title: "人类简史：从动物到上帝",
            url: "http://t.cn/Rot8C7R",
            description: "以色列新锐历史学家的一部重磅作品。从十万年前有生命迹象开始到 21 世纪资本、科技交织的人类发展史。十万年前，地球上至少有六个人种，为何今天却只剩下了我们自己？我们曾经只是非洲角落一个毫不起眼的族群，对地球上生态的影响力和萤火虫、猩猩或者水母相差无几。为何我们能登上生物链的顶端，最终成为地球的主宰？",
            img_url: "",
            tags: "社会学",
            isshow: true,
            isshowCover: true,
            isad: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            title: "重来:更为简单有效的商业思维",
            url: "http://t.cn/RotRYYU",
            description: "大多数的企业管理的书籍都会告诉你：制定商业计划、分析竞争形势、寻找投资人等等。如果你要找的是那样的书，那么把《重来:更为简单有效的商业思维》放回书架吧。《重来:更为简单有效的商业思维》呈现的是一种更好、更简单的经商成功之道。",
            img_url: "",
            tags: "创业,商业",
            isshow: true,
            isshowCover: true,
            isad: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            title: "重新定义团队:谷歌如何工作",
            url: "http://t.cn/RotEwoG",
            description: "在谷歌，人始终被当作企业最重要的财富，谷歌管理层始终将发掘、培养和留住人才，作为企业高战略，这是谷歌成为幸福企业和成功企业的根本。正如作者所说，谷歌的这些原则对任何团队的组建和管理都适用。不管你是苦于找不到合伙人的初创公司老板，还是面临好人才跳槽的企业经理人，抑或是面对互联网转型的企业高管，都能从书中重新发现人才的重要性和团队的价值。",
            img_url: "",
            tags: "谷歌,创业,运营,招聘",
            isshow: true,
            isshowCover: true,
            isad: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            title: "鱼羊野史(第1卷)",
            url: "http://t.cn/RotEnk4",
            description: "历史，有的时候是故事，有的时候是事故，有的时候山重水复疑无路。 人类，有的时候聪明，有的时候傻，但始终在进化。 历史不是镜子，历史是开了又落的花，朝花夕拾, 跟高晓松一起，重温故国、故城、故人芳华刹那",
            img_url: "",
            tags: "历史",
            isshow: true,
            isshowCover: true,
            isad: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            title: "重新定义公司:谷歌是如何运营的",
            url: "http://t.cn/RotnCxs",
            description: "今日的谷歌是全球最具标志性的企业，在各个领域都有创新突破，并向技术的极限推进。《重新定义公司：谷歌是如何运营的》作者是谷歌执行董事长埃里克·施密特和前高级副总裁乔纳森·罗森伯格，他们亲自分享十余年来帮助谷歌成长所领悟到的管理启示：科技正在改变商业的方方面面，这种改变速度空前，而且仍在加速，公司若想在互联网时代站稳脚跟，就要制定新的商业规则。",
            img_url: "",
            tags: "谷歌,创业,运营",
            isshow: true,
            isshowCover: true,
            isad: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            title: "腾讯传1998—2016",
            url: "http://t.cn/RotuPIN",
            description: "从1998年开始创业到成为世界级互联网巨头，腾讯以即时通信工具起步，逐渐进入社交网络、互动娱乐、网络媒体、电子商务等领域，在超高速发展的同时亦饱受争议，在“3Q大战”的激烈冲突之后又进一步走向开放……腾讯的发展路径，亦是中国互联网企业成长的缩影。我们可以看到，中国的互联网人在应用性迭代和对本国消费者的行为了解上，找到了自己的办法，并开始领跑全球。",
            img_url: "",
            tags: "腾讯,传记",
            isshow: true,
            isshowCover: true,
            isad: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            title: "把时间当作朋友(第3版)",
            url: "http://t.cn/RotuIRJ",
            description: "从心智成长的角度来谈自我积累。李笑来老师通过自己职业生涯中遇到的事例，告诉我们：如何打开心智，如何运用心智来和时间做朋友，从而开启人生的成功旅程。畅销多年，虽经反复咀嚼依然不断有新的启发，令人受用至今——这就是本书的魅力！",
            img_url: "",
            tags: "认知,心智,时间",
            isshow: true,
            isshowCover: true,
            isad: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            title: "从0到1:开启商业与未来的秘密",
            url: "http://t.cn/RotuRhL",
            description: "硅谷创投教父、PayPal创始人作品，斯坦福大学改变未来的一堂课，为世界创造价值的商业哲学。在科技剧烈改变世界的今天，想要成功，你必须在一切发生之前研究结局。你必须找到创新的独特方式，让未来不仅仅与众不同，而且更加美好。从0到1，为自己创造无限的机会与价值！",
            img_url: "",
            tags: "创业",
            isshow: true,
            isshowCover: true,
            isad: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            title: "把你的英语用起来!(新版) ",
            url: "http://t.cn/Rot3UrV",
            description: "在这本书中，作者刘晓光和伍君仪以自己英语逆袭的亲身经历入手，提供了一套理论清晰、操作性强的英语训练体系，向所有英语学习者传达了这样的理念：语言学习没有捷径，但没有捷径并不意味着学习者要坚持下去一定会十分艰辛。",
            img_url: "",
            tags: "英语",
            isshow: true,
            isshowCover: true,
            isad: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            title: "1368个单词就够了",
            url: "http://t.cn/Rot3YSK",
            description: "这本书是作者王乐平先生历时4年研发，在教学过程中更好的实现了本书思想的实际指导作用。这本书的基础在于：中国人背了多年的单词，学语法，练习听力和口语，参加了多种类型的考试，但由于缺乏语言环境，很多人在真正使用英语的时候，还是出现表达障碍。",
            img_url: "",
            tags: "英语",
            isshow: true,
            isshowCover: true,
            isad: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            title: "每天最重要的2小時",
            url: "http://t.cn/Rot1JHR",
            description: "本書作者戴維斯告訴我們，企圖以效法電腦效率的方式來管理我們的時間，注定要失敗。他以淺顯易懂且有趣的文筆生動地解釋行為科學，告訴我們一天當中真正有效率的關鍵時刻，而且一樣重要的是，他也告訴我們如何用更好的方式，安排其他效率沒那麼好的平凡時刻。",
            img_url: "",
            tags: "时间",
            isshow: true,
            isshowCover: true,
            isad: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            title: "增长黑客:创业公司的用户与收入增长秘籍",
            url: "http://t.cn/RotBEcK",
            description: "增长黑客”这一概念近年来兴起于美国互联网创业圈，最早是由互联网创业者Sean Ellis提出。增长黑客是介于技术和市场之间的新型团队角色，主要依靠技术和数据的力量来达成各种营销目标，而非传统意义上靠砸钱来获取用户的市场推广角色。",
            img_url: "",
            tags: "创业,Growth Hacking",
            isshow: true,
            isshowCover: true,
            isad: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        },
        {
            title: "Android Things 中文文档社区预览版",
            url: "https://atdocs.cn",
            description: "全球已经有很多开发者使用 Android Things 开发出了非常有意思的应用，使用 Android Things 技术在物联网领域占得一席之地。这一次，我们希望中国的开发者也能参与，不掉队。我们与官方取得联系，在 Android Things 的文档最近进行的一次大改动之后，计划招募志愿者将文档中文化，并持续跟进。欢迎大家不停的 Review 这份翻译文档。在我们的社区校对完成之后，文档就是 Google Developers 中文官方文档。",
            img_url: "",
            tags: "Android,Android Things,物联网,IoT",
            isshow: true,
            isshowCover: true,
            isad: false,
            ad_config: {
                category: "AD",
                action: "click",
                label: "",
                value: "",
                nodeid: "",
            },
            style: {
                isRound: true
            }
        }
	]
};

var evnets = {
	title: "活动",
	data: [
       {
            title: "暂无推荐的活动",
            url: "https://gdgdocs.org/r/A8lDj5",
            description: '欢迎推荐你觉得值得参加的活动...',
            isshow: true
        },
        {
            title: "腾讯Live开发者大会",
            url: "http://2018.tlc.ivweb.io/",
            description: '前沿科技！探索跨端无限可能，腾讯 Live 技术开发者大会（TLC）再度来袭，早鸟票倒计时！本次TLC大会主题涵盖 AI 人体姿态识别、NBA直播系统千万高并发架构、世界杯直播技术揭秘、春节期间最热门的在线答题方案剖析，更有当下最热门的移动端 Google Flutter、RN和小程序的实践场景，本次大会，我们邀请了国内外16名行业专家，他们来自Instagram、腾讯、YY、声网、熊猫直播、陌陌、即构科技等国内外知名企业，这将是一场技术架构领域的嘉年华。购票地址：<a href="https://www.bagevent.com/widget/ticket/829116" target="_blank">https://www.bagevent.com/widget/ticket/829116</a><p>购票优惠码：<code>androidweekly</code> 使用该优惠码购票可以省 <code>30 元</code></p>',
            isshow: false
        },
        {
            title: "「HenCoder Plus」Android 高级培养计划",
            url: "http://plus.hencoder.com/",
            description: '线上教学，助力你快速提升 Android 关键技能，突破瓶颈，实现技术跃迁',
            isshow: false
        },
        {
            title: "Google Play 政策更新｜Google Play 线上培训营 · 三月第 2 期",
            url: "https://mp.weixin.qq.com/s/P1uezfOPgOdCjr3FaYzm9g",
            description: '本次课程我们将为大家介绍下今年都有哪些重点政策做了更新。想快速了解 Google Play 最新政策更新或是您有一些相关疑问，都非常欢迎您来参加我们此次的课程，我们将对新政策做详细的深度解析。Google Play 团队将会留出 20 分钟的时间为您在线答疑。',
            isshow: false
        },
        {
            title: "掘金线下沙龙 JTalk ：《Android 进阶之旅》",
            url: "https://wx.duohui.co/event/3230",
            description: '本次 JTalk 邀请到了美团、滴滴、得到、Powerinfo 工程师，来一起聊聊 Android 应用架构体系及团队技术体系的搭建和演进、组件化和 SDK 的性能优化。',
            isshow: false
        },
        {
            title: "巧用订阅功能增加营收｜Google Play 线上培训营 · 三月第 1 期",
            url: "https://mp.weixin.qq.com/s/e1BwOFmNHXNRe9Y0kRVgTA",
            description: '本月课程我们将介绍如何为您的应用程序新增订阅项目来提高收益以及重点政策更新！您可以通过订阅功能新增产品，定期向使用者收取内容或服务费用，每款应用程序都可提供多种不同周期的订阅方案。在课程里 Google Play 小组会预留 20 分钟进行在线问答，欢迎大家踊跃提问。',
            isshow: false
        },
        {
            title: "悟空净化众筹计划",
            url: "https://yanlu.me/wu_kong_ad_none/",
            description: '为什么要众筹：做了6个月的个人开发者，太艰难了。周末无休、深夜修bug、定位手机兼容问题、回复用户问题、上千个应用的解码。大量用户的涌入，无力支撑大量解码，工作量实在太多，决心做个改变，2018年只服务核心用户',
            isshow: false
        },
        {
            title: "邀请函 | 在线与专家互动，为您解析 Android Oreo",
            url: "https://mp.weixin.qq.com/s/8Xp7E-7SEOpgGIkREJ4kCg",
            description: '元旦已经走远，春节尚未来临。在这种浓浓的节日气息下，我们为各位开发者们准备了一份 “新春贺礼” ，2 月 7 日 (周三) 晚八点半，一场妙趣横生的线上直播趴等您 “盛装” 莅临。我们将在此次直播中帮助您迅速了解 Android Oreo 特性及兼容性，一起回到 “课堂”，温故知新，以饱满的状态迎接新的一年。',
            isshow: false
        },
        {
            title: "2017 Google 开发者大会",
            url: "http://www.google.cn/intl/zh-CN/events/developerdays2017china/",
            description: 'Google 开发者大会 (Google Developer Days，简称 GDD) 是展示 Google 最新开发者产品和平台的全球盛会，旨在帮助您快速开发优质应用，发展和留住活跃用户群，充分利用各种工具赚取更多收益。2017 Google 开发者大会将于 12 月 13 日和 14 日于上海举办，主题将涵盖 Android、移动网络、Firebase、机器学习、云服务、AR/VR、设计以及更多。我们非常高兴与您分享我们关于创新技术的想法，鼓励广大开发者着手构建下一个精彩的移动应用或网络体验。',
            isshow: false
        },
        {
            title: "HenCoder「仿写酷界面」活动——征稿",
            url: "http://hencoder.com/activity-mock-1/",
            description: 'HenCoder 的自定义 View 部分第一季——绘制——的技术讲解部分已经结束。在下一季——布局——开始之前，绘制部分还有最后一个环节，那就是在上个月我提到过的：「仿写酷界面」活动。',
            isshow: false
        },
        {
            title: "增长大咖面对面」GrowingIO 2017 增长大会",
            url: "https://www.bagevent.com/event/851446?bag_track=1016edm",
            description: 'GrowingIO 2017 增长大会，国内顶尖增长大会，立足前沿，引入全球更先进、更科学的理念革新和增长实践，全新角度更严谨、高效地驱动业务增长！',
            isshow: false
        },
        {
            title: "AMP Roadshow技术分享路演中国专场报名开始了！",
            url: "https://mp.weixin.qq.com/s/SnVR14CXO0925IG4rABkxA",
            description: 'Google 公司为了帮助更多的互联网公司加快对 AMP 技术的采纳，这个月开始在全球范围内十多个城市开始举办一个分享 AMP 技术的路演大会活动。来自 Google AMP 和网络技术团队的工程师们，将去全球很多城市进行技术分享。在这个全球分享活动中，Google 的技术专家还将专程来中国为中国的开发者们分享。今年的 12 月 5 日和 12 月 9 日，Google 开发技术推广部将在北京和上海分别举办一场 AMP Roadshow 活动。',
            isshow: false
        },
        {
            title: "知乎 x RxJava Meetup",
            url: "https://segmentfault.com/e/1160000011193055",
            description: 'Android 开发者都知道 RxJava，它给我们带来开发上的便利的同时，也会带来很多问题。知乎 Android 团队在最近半年多尝试引入 RxJava，我们想结合自己的经验和遇到的问题，和社区里的开发者们做一次以 RxJava 为主题的分享活动。由于场地限制，参加人数会限制在 25 人左右。',
            isshow: false
        },
        {
            title: "Google Play 成长之星 “Pizza Night” 北京站",
            url: "http://t.cn/RC7gNiY?utm_source=androidweekly.cn&utm_medium=website",
            description: 'Google Play “成长之星” 项目面向中小创业企业，助力开发者在全球市场赢得成功。在这里，您会了解到 “成长之星” 项目将如何帮助您的应用得到全方位的提升。本次活动 Google Play 大中华区开发者产品市场负责人黄继佳将为大家介绍 “成长之星” 项目，我们还请到了 “成长之星” 成员与出海行业大咖为我们分享出海经验。您将有机会与 Google Play 的专家直接交流。现在就来报名吧！期待到时与您相见！',
            isshow: false
        },
        {
            title: "Google Play 下半年政策更新重点及线上问答",
            url: "http://t.cn/RC7rVkR?utm_source=androidweekly.cn&utm_medium=website",
            description: '在 8 月 3 日发布了新一轮 Google Play 开发者政策更新，其中包含了我们推出的全新关于 赌博以及用户数据信息等政策更新。因此本月我们将重点解决这两条政策的细节，并且会着重分享下半年 Google Play 的政策重点注意事项。欢迎大家加入我们的课程并参与讨论。还等什么？赶快动动手指，报名课程吧！',
            isshow: false
        }
	]
};
var greenapps = {
    title: "加入公约的应用",
    url: "https://green-android.org/app-certification.html?utm_source=AndroidWeeklys&utm_medium=join-green-android-plan",
    url_name: "申请加入公约",
    description: "秉承尊重用户隐私和保护设备体验的共同价值观，它们选择支持绿色应用公约：",
    showCount: 5,
    utm_info: "?utm_source=AndroidWeeklys&utm_medium=green_app_plan",
    data: [
        {
            name: "酷安",
            url: "http://www.coolapk.com/apk/com.coolapk.market",
            icon: "https://green-android.org/assets/icons/com.coolapk.market.png",
            description: '发现应用的乐趣',
            isshow: true
        },
        {
            name: "即刻",
            url: "http://www.coolapk.com/apk/com.ruguoapp.jike",
            icon: "https://green-android.org/assets/icons/com.ruguoapp.jike.png",
            description: '基于兴趣的极简信息推送',
            isshow: true
        },
        {
            name: "知乎",
            url: "http://www.coolapk.com/apk/com.zhihu.android",
            icon: "https://green-android.org/assets/icons/com.zhihu.android.png",
            description: '分享你的知识、经验和见解',
            isshow: true
        },
        {
            name: "AppSo",
            url: "http://www.coolapk.com/apk/com.ifanr.appso",
            icon: "https://green-android.org/assets/icons/com.ifanr.appso.png",
            description: '智能手机更好用的秘密',
            isshow: true
        },
        {
            name: "Flipboard",
            url: "http://www.coolapk.com/apk/flipboard.cn",
            icon: "https://green-android.org/assets/icons/flipboard.cn.png",
            description: '您的随身社交杂志',
            isshow: true
        },
        {
            name: "Cuto Wallpaper",
            url: "http://coolapk.com/apk/com.sspai.cuto.android",
            icon: "https://green-android.org/assets/icons/com.sspai.cuto.android.png",
            description: '手工精挑细选每一张壁纸',
            isshow: true
        },
        {
            name: "Dir垃圾清理",
            url: "http://coolapk.com/apk/kh.android.dir",
            icon: "https://green-android.org/assets/icons/kh.android.dir.png",
            description: '清爽的垃圾文件清理工具',
            isshow: true
        },
        {
            name: "煎蛋",
            url: "http://coolapk.com/apk/com.danielstudio.app.wowtu",
            icon: "https://green-android.org/assets/icons/com.danielstudio.app.wowtu.png",
            description: '煎蛋·非官方高品质应用',
            isshow: true
        },
        {
            name: "最美创意",
            url: "http://www.coolapk.com/apk/com.bugkr.beautyidea",
            icon: "https://green-android.org/assets/icons/com.bugkr.beautyidea.png",
            description: '屡获设计奖的短视频聚合',
            isshow: true
        },
        {
            name: "Mysplash",
            url: "http://www.coolapk.com/apk/com.wangdaye.mysplash",
            icon: "https://green-android.org/assets/icons/com.wangdaye.mysplash.png",
            description: '轻巧的开源Unsplash客户端',
            isshow: true
        },
        {
            name: "花哪儿记账",
            url: "http://www.coolapk.com/apk/com.kongzue.paywhere",
            icon: "https://green-android.org/assets/icons/com.kongzue.paywhere.png",
            description: '简单、纯粹的记账应用',
            isshow: true
        },
        {
            name: "潮汐",
            url: "https://www.coolapk.com/apk/io.moreless.tide",
            icon: "https://green-android.org/assets/icons/io.moreless.tide.png",
            description: '让你专心的计时器',
            isshow: true
        }
    ],
    more: {
        name: "更多应用",
        url: "https://green-android.org/",
        icon: "https://green-android.org/assets/images/logo.svg",
        description: '更多遵循公约的应用',
        isshow: true
    }
};

var app_recommend_info = {
    title: "Android 应用友链",
    logo_link: "https://androidlinks.org",
    logo_icon_url: "https://raw.githubusercontent.com/android-links/android-links.github.io/3dfb5ee9ac33c93c61f167539d485d3748338a62/assets/images/logo.png",
    btn_url: "https://androidlinks.org#joined",
    btn_name: "申请加入应用友链计划",
    description: '个人开发者，开发应用不容易，推广应用更是难上加难，由 <a href="https://weibo.com/cmiao" target="_blank">@颜路__</a>  <a href="https://weibo.com/glzjin" target="_blank">@glzjin</a>  <a href="https://weibo.com/drak11t" target="_blank">@drakeet</a>  <a href="https://weibo.com/inferjay" target="_blank">@脉脉不得语</a>  联合发起的「Android 应用友链」计划就此应运而生，欢迎加入 Android 应用之间的互相推荐。',
    utm_info: "?utm_source=AndroidWeeklys&utm_medium=app_recommend_info",
    api_url: "https://recommend.wetolink.com/api/v2/app_recommend/pull",
    showCount: 6,
    data: []
};
</script>
<script src="//ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js" ></script>
</head>
<body class="home-template fixed-navbar">
	<!-- start header -->
<header class="main-header">
	<nav class="navbar navbar-default navbar-fixed-top">
		<div class="container">
			<div class="navbar-header">
				<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
					<span class="sr-only">切换导航</span>
					<i class="material-icons">&#xE5D2;</i>
				</button>
				<!-- start logo -->
				<a class="navbar-brand image-logo" href="https://androidweekly.io"><img src="/content/images/2018/01/apple-touch-icon-114x114.png" alt="Android 开发技术周报"></a>
				<!-- end logo -->
			</div>
			<div class="search-toggle-wrap pull-right">
				<a href="" class="search-toggle"><i class="material-icons">&#xE8B6;</i></i></a>
			</div>
			<div id="navbar" class="navbar-collapse collapse">
	<ul class="nav navbar-nav navbar-right">
		<li class=" current-menu-item" ><a href="https://androidweekly.io/">首页</a></li>
		<li class="android-pie " ><a href="https://androidweekly.io/android-pie/?utm_source=navbar&utm_medium=website">Android Pie</a></li>
		<li class=" " ><a href="https://developer.android.google.cn/samples/?utm_source=androidweekly.cn&utm_medium=website-navbar">示例</a></li>
		<li class=" " ><a href="https://materialdoc.cn/?utm_source=androidweekly.cn&utm_medium=website-navbar">设计</a></li>
		<li class=" " ><a href="https://androidweekly.io/tag/androiddevspecialweekly/">特刊</a></li>
		<li class=" " ><a href="https://www.androiddevtools.cn/?utm_source=androidweekly.cn&utm_medium=website-navbar">工具</a></li>
		<li class=" " ><a href="https://androidweekly.io/events/">活动</a></li>
		<li class=" " ><a href="https://androidweekly.io/cool-jobs/">酷工作</a></li>
		<li class=" " ><a href="https://form.chinagdg.org/forms/d/e/1FAIpQLSfDyUqAxB76LlbJeUvZVG8wqxTk1z0lAVMBCKg4sck6_OeHOQ/viewform">投稿</a></li>
		<li class=" " ><a href="https://androidweekly.io/gay-friends/">好基友们</a></li>
		<li class=" " ><a href="https://androidweekly.io/donate/">捐赠</a></li>
		<li class=" " ><a href="https://androidweekly.io/about/">关于</a></li>
	</ul>
</div>
		</div>
	</nav>
</header>
<!-- end header -->
	
<div class="cover cover-home" style="background-image: url(/content/images/2018/11/home_cover.jpg);">
	<div class="container">
		<div class="row">
			<div class="col-md-8 col-md-offset-2">
				<h1 class="welcome-message">Android 开发技术周报</h1>
				<p class="h4 description">Write the code, Change the world</p>
			</div>
		</div>
	</div>
</div>
<div class="main-content-area">
	<div class="container">
		<div class="row">
			<div class="col-md-4 col-sm-6">
				<article class="card post-wrap post tag-androiddevweekly">
					<div class="card-header ">
						<a href="/android-dev-weekly-issue-223/">
							<div class="featured-image-container"  style="background-image: url(/content/images/2019/04/android-dev-weekly-issue-223-1.jpg);">
							</div>
						</a>
						<div class="author">
							<a href="/author/inferjay/">
								<img  class="avatar" src="//www.gravatar.com/avatar/77bcd5f784ed2eb8865cf340d416a42a?s&#x3D;250&amp;d&#x3D;mm&amp;r&#x3D;x" alt="脉脉不得语" nopin="nopin">
								<span class="name">脉脉不得语</span>
							</a>
						</div>
					</div>
					<div class="content">
						<h2 class="h4 title"><a href="/android-dev-weekly-issue-223/">Android 开发技术周报 Issue#223</a></h2>
						<div class="meta">
							<span  class="date"><i class="material-icons">&#xE192;</i>April 08, 2019</span>
							<span class="Comment"><i class="material-icons">&#xE0B9;</i><a href="/android-dev-weekly-issue-223/#disqus_thread">0 条评论</a></span>
							<span class="tag-list"><i class="material-icons">&#xE2C8;</i><a href="/tag/androiddevweekly/">AndroidDevWeekly</a></span>
						</div>
						<div class="post-entry">
							<h3 id="">新闻</h3>
<ol>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/834733.htm">谷歌将于10月23日举办安卓全球开发者峰会：首秀Android R?</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/834601.htm">Android 10.0手势功能升级：类似于苹果3D Touch</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/834561.htm">谷歌的Pixel智能手表细节通过专利图泄露</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/834535.htm">Android Q将提高未经核实应用的安装安全性 同时更繁琐</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/834411.htm">Collabora发布Spurv项目 可在Wayland桌面上运行Android应用程序</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/834029.htm">2019年4月Android安全补丁发布：共计修复89处漏洞</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/833999.htm">Android Q第二个测试版发布：加大对折叠屏测试力度</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/833949.htm">Q”弹可口 新一代Android Q新功能抢先看</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/833577.htm">谷歌精简了 AOSP 的一些自带应用</a></p>
</li>
</ol>
<h3 id="">教程</h3>
<ol>
<li>
<p><a href="https://fucknmb.com/2019/04/04/Android-Q-BaseDexClassLoader%E5%8F%98%E5%8A%A8/?from=timeline">Android Q</a></p></li></ol>
						</div>
					</div>
					<div class="card-footer">
						<a href="/android-dev-weekly-issue-223/" class="parmalink ripple">查看更多 <i class="material-icons">&#xE5C8;</i></a>
						<div class="share-wrap pull-right">
	<i class="material-icons share-button ripple">&#xE80D;</i>
	<div class="share-link-wrap">
		<!-- facebook -->
		<a class="facebook ripple" href="https://www.facebook.com/sharer/sharer.php?u=https://androidweekly.io/android-dev-weekly-issue-223/" onclick="window.open(this.href, 'facebook-share','width=580,height=296');return false;"><i class="fa fa-facebook"></i> Facebook</a>
		<!-- twitter -->
		<a class="twitter ripple" href="https://twitter.com/share?text=Android%20%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF%E5%91%A8%E6%8A%A5%20Issue%23223&amp;url=https://androidweekly.io/android-dev-weekly-issue-223/" onclick="window.open(this.href, 'twitter-share', 'width=550,height=235');return false;"><i class="fa fa-twitter"></i> Twitter</a>
		<!-- google plus -->
		<a class="google-plus ripple" href="https://plus.google.com/share?url=https://androidweekly.io/android-dev-weekly-issue-223/" onclick="window.open(this.href, 'google-plus-share', 'width=490,height=530');return false;"><i class="fa fa-google-plus"></i> Google plus</a>
	</div>
</div>					</div>
				</article>
			</div>
			<div class="col-md-4 col-sm-6">
				<article class="card post-wrap post tag-androiddevweekly">
					<div class="card-header ">
						<a href="/android-dev-weekly-issue-222/">
							<div class="featured-image-container"  style="background-image: url(/content/images/2019/04/android-dev-weekly-issue-222.jpg);">
							</div>
						</a>
						<div class="author">
							<a href="/author/inferjay/">
								<img  class="avatar" src="//www.gravatar.com/avatar/77bcd5f784ed2eb8865cf340d416a42a?s&#x3D;250&amp;d&#x3D;mm&amp;r&#x3D;x" alt="脉脉不得语" nopin="nopin">
								<span class="name">脉脉不得语</span>
							</a>
						</div>
					</div>
					<div class="content">
						<h2 class="h4 title"><a href="/android-dev-weekly-issue-222/">Android 开发技术周报 Issue#222</a></h2>
						<div class="meta">
							<span  class="date"><i class="material-icons">&#xE192;</i>April 01, 2019</span>
							<span class="Comment"><i class="material-icons">&#xE0B9;</i><a href="/android-dev-weekly-issue-222/#disqus_thread">0 条评论</a></span>
							<span class="tag-list"><i class="material-icons">&#xE2C8;</i><a href="/tag/androiddevweekly/">AndroidDevWeekly</a></span>
						</div>
						<div class="post-entry">
							<h3 id="">新闻</h3>
<ol>
<li>
<p><a href="https://mp.weixin.qq.com/s/i1W1SIFIc1ePq8E-b8qG8A">重要更新 | 目标 API 等级 2019 年新规定</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/831779.htm">Android Q公测版本在初代Pixel智能机上跑得飞快</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/831685.htm">谷歌欲将Google Assistant与Android整合</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/831301.htm">研究表明预装Android应用程序会带来巨大的安全和隐私风险</a></p>
</li>
</ol>
<h3 id="">教程</h3>
<ol>
<li>
<p><a href="https://mp.weixin.qq.com/s/DzZDOUn0fb2VfQXvO79MCQ">Android Q 让用户优雅地管理位置权限</a></p>
</li>
<li>
<p><a href="https://www.jianshu.com/p/1fa113b7ff64">Android 8.0 LinearLayout 源码解析</a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s/uvrkAvbfWuDYf7SWX_dJBA">Android app反调试与代码保护的一些基本方案</a></p>
</li>
</ol>
<h3 id="app">开源库 &amp; App</h3>
<ol>
<li>
<p><a href="https://github.com/adroitandroid/Near">Near</a></p>
<p>使用 TCP 套接字进行传输的</p></li></ol>
						</div>
					</div>
					<div class="card-footer">
						<a href="/android-dev-weekly-issue-222/" class="parmalink ripple">查看更多 <i class="material-icons">&#xE5C8;</i></a>
						<div class="share-wrap pull-right">
	<i class="material-icons share-button ripple">&#xE80D;</i>
	<div class="share-link-wrap">
		<!-- facebook -->
		<a class="facebook ripple" href="https://www.facebook.com/sharer/sharer.php?u=https://androidweekly.io/android-dev-weekly-issue-222/" onclick="window.open(this.href, 'facebook-share','width=580,height=296');return false;"><i class="fa fa-facebook"></i> Facebook</a>
		<!-- twitter -->
		<a class="twitter ripple" href="https://twitter.com/share?text=Android%20%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF%E5%91%A8%E6%8A%A5%20Issue%23222&amp;url=https://androidweekly.io/android-dev-weekly-issue-222/" onclick="window.open(this.href, 'twitter-share', 'width=550,height=235');return false;"><i class="fa fa-twitter"></i> Twitter</a>
		<!-- google plus -->
		<a class="google-plus ripple" href="https://plus.google.com/share?url=https://androidweekly.io/android-dev-weekly-issue-222/" onclick="window.open(this.href, 'google-plus-share', 'width=490,height=530');return false;"><i class="fa fa-google-plus"></i> Google plus</a>
	</div>
</div>					</div>
				</article>
			</div>
			<div class="col-md-4 col-sm-6">
				<article class="card post-wrap post tag-androiddevweekly">
					<div class="card-header ">
						<a href="/android-dev-weekly-issue-221/">
							<div class="featured-image-container"  style="background-image: url(/content/images/2019/03/android-dev-weekly-issue-221.jpg);">
							</div>
						</a>
						<div class="author">
							<a href="/author/inferjay/">
								<img  class="avatar" src="//www.gravatar.com/avatar/77bcd5f784ed2eb8865cf340d416a42a?s&#x3D;250&amp;d&#x3D;mm&amp;r&#x3D;x" alt="脉脉不得语" nopin="nopin">
								<span class="name">脉脉不得语</span>
							</a>
						</div>
					</div>
					<div class="content">
						<h2 class="h4 title"><a href="/android-dev-weekly-issue-221/">Android 开发技术周报 Issue#221</a></h2>
						<div class="meta">
							<span  class="date"><i class="material-icons">&#xE192;</i>March 25, 2019</span>
							<span class="Comment"><i class="material-icons">&#xE0B9;</i><a href="/android-dev-weekly-issue-221/#disqus_thread">0 条评论</a></span>
							<span class="tag-list"><i class="material-icons">&#xE2C8;</i><a href="/tag/androiddevweekly/">AndroidDevWeekly</a></span>
						</div>
						<div class="post-entry">
							<h3 id="">新闻</h3>
<ol>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/830417.htm">Android Pie如何快捷分享文件至特定App</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/829475.htm">谷歌招聘Node工程师 新系统Fuchsia有望支持JS</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/829371.htm">Android Q要来了 但很可能又是一次鸡肋更新</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/829287.htm">KaiOS势头迅猛引谷歌眼红，安卓或将进军功能机市场</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/828603.htm">Android Q开始支持对所有通知使用聊天气泡</a></p>
</li>
</ol>
<h3 id="">教程</h3>
<ol>
<li>
<p><a href="https://mp.weixin.qq.com/s/W38aauoCEEUbL8KvUkb_Rw">Android技术架构演进与未来</a></p>
</li>
<li>
<p><a href="https://www.jianshu.com/p/aef252db9869"> Gson源码解析和它的设计模式</a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s/RS7O7prvkCvKyxkK3YQxtA">Litho的使用及原理剖析</a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s/x6njiJWqN-4lOJy158_UYA">你真的了解webview么？</a></p>
</li>
</ol>
<h3 id="app">开源库 &amp; App</h3>
<ol>
<li>
<p><a href="https://github.com/naver/svc">SVC</a></p>
<p>Easy and intuitive pattern library for Android</p>
</li>
<li>
<p><a href="https://github.com/AlShevelev/music-visualization">Music visualization</a></p></li></ol>
						</div>
					</div>
					<div class="card-footer">
						<a href="/android-dev-weekly-issue-221/" class="parmalink ripple">查看更多 <i class="material-icons">&#xE5C8;</i></a>
						<div class="share-wrap pull-right">
	<i class="material-icons share-button ripple">&#xE80D;</i>
	<div class="share-link-wrap">
		<!-- facebook -->
		<a class="facebook ripple" href="https://www.facebook.com/sharer/sharer.php?u=https://androidweekly.io/android-dev-weekly-issue-221/" onclick="window.open(this.href, 'facebook-share','width=580,height=296');return false;"><i class="fa fa-facebook"></i> Facebook</a>
		<!-- twitter -->
		<a class="twitter ripple" href="https://twitter.com/share?text=Android%20%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF%E5%91%A8%E6%8A%A5%20Issue%23221&amp;url=https://androidweekly.io/android-dev-weekly-issue-221/" onclick="window.open(this.href, 'twitter-share', 'width=550,height=235');return false;"><i class="fa fa-twitter"></i> Twitter</a>
		<!-- google plus -->
		<a class="google-plus ripple" href="https://plus.google.com/share?url=https://androidweekly.io/android-dev-weekly-issue-221/" onclick="window.open(this.href, 'google-plus-share', 'width=490,height=530');return false;"><i class="fa fa-google-plus"></i> Google plus</a>
	</div>
</div>					</div>
				</article>
			</div>
			<div class="col-md-4 col-sm-6">
				<article class="card post-wrap post tag-androiddevweekly">
					<div class="card-header ">
						<a href="/android-dev-weekly-issue-220/">
							<div class="featured-image-container"  style="background-image: url(/content/images/2019/03/android-dev-weekly-issue-220.jpg);">
							</div>
						</a>
						<div class="author">
							<a href="/author/inferjay/">
								<img  class="avatar" src="//www.gravatar.com/avatar/77bcd5f784ed2eb8865cf340d416a42a?s&#x3D;250&amp;d&#x3D;mm&amp;r&#x3D;x" alt="脉脉不得语" nopin="nopin">
								<span class="name">脉脉不得语</span>
							</a>
						</div>
					</div>
					<div class="content">
						<h2 class="h4 title"><a href="/android-dev-weekly-issue-220/">Android 开发技术周报 Issue#220</a></h2>
						<div class="meta">
							<span  class="date"><i class="material-icons">&#xE192;</i>March 19, 2019</span>
							<span class="Comment"><i class="material-icons">&#xE0B9;</i><a href="/android-dev-weekly-issue-220/#disqus_thread">0 条评论</a></span>
							<span class="tag-list"><i class="material-icons">&#xE2C8;</i><a href="/tag/androiddevweekly/">AndroidDevWeekly</a></span>
						</div>
						<div class="post-entry">
							<h3 id="">新闻</h3>
<ol>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/828389.htm">Android Q的手势导航更接近iPhone，你怎么看？</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/828209.htm">Magisk率先对Android Q Beta 1实现ROOT：支持一代二代Pixel</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/828147.htm">谷歌推出开发者门户网站：让开发Android游戏变得更简单</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/828033.htm">Google Play商店正在将应用图标标准化</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/827727.htm">为增强安全性 谷歌将对Android剪贴板应用痛下杀手</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/827287.htm">Android Q的桌面模式 似乎来得有点晚</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/827171.htm">一文快速了解Android Q Beta 1都有哪些新功能</a></p>
</li>
</ol>
<h3 id="">教程</h3>
<ol>
<li>
<p><a href="https://feng.moe/archives/47/">Android Q 存储机制大变化</a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s/a0in4DqB8Bay046knkRr1g">网易新闻客户端Flutter混合开发实践</a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s/-2z7lAGQ3GeSqFfkPGPWNA">Android 架构组件 -</a></p></li></ol>
						</div>
					</div>
					<div class="card-footer">
						<a href="/android-dev-weekly-issue-220/" class="parmalink ripple">查看更多 <i class="material-icons">&#xE5C8;</i></a>
						<div class="share-wrap pull-right">
	<i class="material-icons share-button ripple">&#xE80D;</i>
	<div class="share-link-wrap">
		<!-- facebook -->
		<a class="facebook ripple" href="https://www.facebook.com/sharer/sharer.php?u=https://androidweekly.io/android-dev-weekly-issue-220/" onclick="window.open(this.href, 'facebook-share','width=580,height=296');return false;"><i class="fa fa-facebook"></i> Facebook</a>
		<!-- twitter -->
		<a class="twitter ripple" href="https://twitter.com/share?text=Android%20%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF%E5%91%A8%E6%8A%A5%20Issue%23220&amp;url=https://androidweekly.io/android-dev-weekly-issue-220/" onclick="window.open(this.href, 'twitter-share', 'width=550,height=235');return false;"><i class="fa fa-twitter"></i> Twitter</a>
		<!-- google plus -->
		<a class="google-plus ripple" href="https://plus.google.com/share?url=https://androidweekly.io/android-dev-weekly-issue-220/" onclick="window.open(this.href, 'google-plus-share', 'width=490,height=530');return false;"><i class="fa fa-google-plus"></i> Google plus</a>
	</div>
</div>					</div>
				</article>
			</div>
			<div class="col-md-4 col-sm-6">
				<article class="card post-wrap post tag-androiddevweekly">
					<div class="card-header ">
						<a href="/android-dev-weekly-issue-219/">
							<div class="featured-image-container"  style="background-image: url(/content/images/2019/03/android-dev-weekly-issue-219.jpg);">
							</div>
						</a>
						<div class="author">
							<a href="/author/inferjay/">
								<img  class="avatar" src="//www.gravatar.com/avatar/77bcd5f784ed2eb8865cf340d416a42a?s&#x3D;250&amp;d&#x3D;mm&amp;r&#x3D;x" alt="脉脉不得语" nopin="nopin">
								<span class="name">脉脉不得语</span>
							</a>
						</div>
					</div>
					<div class="content">
						<h2 class="h4 title"><a href="/android-dev-weekly-issue-219/">Android 开发技术周报 Issue#219</a></h2>
						<div class="meta">
							<span  class="date"><i class="material-icons">&#xE192;</i>March 11, 2019</span>
							<span class="Comment"><i class="material-icons">&#xE0B9;</i><a href="/android-dev-weekly-issue-219/#disqus_thread">0 条评论</a></span>
							<span class="tag-list"><i class="material-icons">&#xE2C8;</i><a href="/tag/androiddevweekly/">AndroidDevWeekly</a></span>
						</div>
						<div class="post-entry">
							<h3 id="">新闻</h3>
<ol>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/825829.htm">谷歌工程师确认5月的Android Q Beta公测将纳入更多厂商</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/825283.htm">用广告换Android应用奖励 这件事谷歌要亲自做了</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/824981.htm">主攻简单和易用性 谷歌TensorFlow迎来2.0版本</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/824929.htm">报道称Google正致力于在Android中安全地存储数字驾照</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/823953.htm">尚未正式发布的Android Q系统：已经被Magisk作者给Root了</a></p>
</li>
</ol>
<h3 id="">教程</h3>
<ol>
<li>
<p><a href="https://mp.weixin.qq.com/s/0uxeWS-9-EGUMFDKkLotQg">图像快速修复技术</a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s/v-wwruadJntX1n-YuMPC7g">码上用它开始Flutter混合开发——FlutterBoost</a></p>
</li>
</ol>
<h3 id="app">开源库 &amp; App</h3>
<ol>
<li>
<p><a href="https://github.com/alibaba/fish-redux">Fish Redux</a></p>
<p>一个基于 Redux 数据管理的组装式 flutter 应用框架， 它特别适用于构建中大型的复杂应用。</p>
</li>
<li>
<p><a href="https://github.com/alibaba/flutter_boost">FlutterBoost</a></p>
<p>新一代Flutter-Native混合解决方案。</p></li></ol>
						</div>
					</div>
					<div class="card-footer">
						<a href="/android-dev-weekly-issue-219/" class="parmalink ripple">查看更多 <i class="material-icons">&#xE5C8;</i></a>
						<div class="share-wrap pull-right">
	<i class="material-icons share-button ripple">&#xE80D;</i>
	<div class="share-link-wrap">
		<!-- facebook -->
		<a class="facebook ripple" href="https://www.facebook.com/sharer/sharer.php?u=https://androidweekly.io/android-dev-weekly-issue-219/" onclick="window.open(this.href, 'facebook-share','width=580,height=296');return false;"><i class="fa fa-facebook"></i> Facebook</a>
		<!-- twitter -->
		<a class="twitter ripple" href="https://twitter.com/share?text=Android%20%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF%E5%91%A8%E6%8A%A5%20Issue%23219&amp;url=https://androidweekly.io/android-dev-weekly-issue-219/" onclick="window.open(this.href, 'twitter-share', 'width=550,height=235');return false;"><i class="fa fa-twitter"></i> Twitter</a>
		<!-- google plus -->
		<a class="google-plus ripple" href="https://plus.google.com/share?url=https://androidweekly.io/android-dev-weekly-issue-219/" onclick="window.open(this.href, 'google-plus-share', 'width=490,height=530');return false;"><i class="fa fa-google-plus"></i> Google plus</a>
	</div>
</div>					</div>
				</article>
			</div>
			<div class="col-md-4 col-sm-6">
				<article class="card post-wrap post tag-androiddevweekly">
					<div class="card-header ">
						<a href="/android-dev-weekly-issue-218/">
							<div class="featured-image-container"  style="background-image: url(/content/images/2019/03/android-dev-weekly-issue-218.jpg);">
							</div>
						</a>
						<div class="author">
							<a href="/author/inferjay/">
								<img  class="avatar" src="//www.gravatar.com/avatar/77bcd5f784ed2eb8865cf340d416a42a?s&#x3D;250&amp;d&#x3D;mm&amp;r&#x3D;x" alt="脉脉不得语" nopin="nopin">
								<span class="name">脉脉不得语</span>
							</a>
						</div>
					</div>
					<div class="content">
						<h2 class="h4 title"><a href="/android-dev-weekly-issue-218/">Android 开发技术周报 Issue#218</a></h2>
						<div class="meta">
							<span  class="date"><i class="material-icons">&#xE192;</i>March 04, 2019</span>
							<span class="Comment"><i class="material-icons">&#xE0B9;</i><a href="/android-dev-weekly-issue-218/#disqus_thread">0 条评论</a></span>
							<span class="tag-list"><i class="material-icons">&#xE2C8;</i><a href="/tag/androiddevweekly/">AndroidDevWeekly</a></span>
						</div>
						<div class="post-entry">
							<h3 id="">新闻</h3>
<ol>
<li>
<p><a href="https://www.cnbeta.com/articles/soft/822973.htm">Dart 2.2 发布 谷歌推出的结构化编程语言</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/soft/822373.htm">Flutter 1.2发布：添加应用内支付和App Bundles</a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s/YxFH8wRfj5gnX-XjkZWbmA">前置摄像头，人脸检测，Google ARCore 1.7 更新有点多！</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/822315.htm">网页端Google Duo正式上线：可在浏览器上视频聊天</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/822365.htm">Android Messages整合Google Assistant 短信约会更方便了</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/821759.htm">Android One更新品牌LOGO 双色设计更适应需求</a></p>
</li>
<li>
<p><a href="https://www.cnbeta.com/articles/tech/821693.htm">新版Android已支持FIDO2标准 免密登录应用或网站</a></p></li></ol>
						</div>
					</div>
					<div class="card-footer">
						<a href="/android-dev-weekly-issue-218/" class="parmalink ripple">查看更多 <i class="material-icons">&#xE5C8;</i></a>
						<div class="share-wrap pull-right">
	<i class="material-icons share-button ripple">&#xE80D;</i>
	<div class="share-link-wrap">
		<!-- facebook -->
		<a class="facebook ripple" href="https://www.facebook.com/sharer/sharer.php?u=https://androidweekly.io/android-dev-weekly-issue-218/" onclick="window.open(this.href, 'facebook-share','width=580,height=296');return false;"><i class="fa fa-facebook"></i> Facebook</a>
		<!-- twitter -->
		<a class="twitter ripple" href="https://twitter.com/share?text=Android%20%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF%E5%91%A8%E6%8A%A5%20Issue%23218&amp;url=https://androidweekly.io/android-dev-weekly-issue-218/" onclick="window.open(this.href, 'twitter-share', 'width=550,height=235');return false;"><i class="fa fa-twitter"></i> Twitter</a>
		<!-- google plus -->
		<a class="google-plus ripple" href="https://plus.google.com/share?url=https://androidweekly.io/android-dev-weekly-issue-218/" onclick="window.open(this.href, 'google-plus-share', 'width=490,height=530');return false;"><i class="fa fa-google-plus"></i> Google plus</a>
	</div>
</div>					</div>
				</article>
			</div>
		</div>
		<!-- start pagination -->
<div class="row">
	<div class="col-sm-12">
		<!-- start pagination -->
		<div class="pagination-wrap">
			<div class="pagination clearfix" role="navigation">
		        <span class="page-number">第 1 页／共 39 页</span>
		        <a class="older-posts ripple" href="/page/2/">往期周报 <i class="material-icons">&#xE5C8;</i></a>
		    </div>
		</div>
		<!-- end pagination -->
	</div>
</div>
<!-- end pagination -->
	</div>
</div>

	<!-- start footer -->
<footer class="main-footer">
	<div class="widget-newsletter">
	<div class="container">
		<div class="row">
			<div class="col-sm-6">
				<h4 class="h3 title">订阅周报</h4>
				每周将最新一期的周报发送到您的邮箱，您可以随时取消订阅
			</div>
			<div class="col-sm-6">
				<div id="mc_embed_signup">
					<form action="#" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" novalidate>
						<div class="input-group">
							<input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL" >
							<span class="bar"></span>
							<label>你的邮箱</label>
							<button type="submit" class="submit-button">
								<i class="material-icons">&#xE163;</i>
							</button>
						</div>
					</form>
					<div id="message"></div>
				</div>
			</div>
		</div>
	</div>
</div>	<div class="footer-widget-area">
		<div class="container">
			<div class="row">
				<div class="col-sm-6 col-md-4">
					<!-- start widget -->
<div class="widget">
	<h4 class="title">最近发布的</h4>
	<div class="content recent-post">
		<div class="recent-single-post clearfix have-image">
			<a href="/android-dev-weekly-issue-223/" class="post-title">
				<div class="post-thumb pull-left" style="background-image:url(/content/images/2019/04/android-dev-weekly-issue-223-1.jpg)"></div>
				<div class="post-info"><h4 class="h5">Android 开发技术周报 Issue#223</h4><div class="date"><i class="material-icons">&#xE192;</i>April 08, 2019</div></div>
			</a>
		</div>
		<div class="recent-single-post clearfix have-image">
			<a href="/android-dev-weekly-issue-222/" class="post-title">
				<div class="post-thumb pull-left" style="background-image:url(/content/images/2019/04/android-dev-weekly-issue-222.jpg)"></div>
				<div class="post-info"><h4 class="h5">Android 开发技术周报 Issue#222</h4><div class="date"><i class="material-icons">&#xE192;</i>April 01, 2019</div></div>
			</a>
		</div>
		<div class="recent-single-post clearfix have-image">
			<a href="/android-dev-weekly-issue-221/" class="post-title">
				<div class="post-thumb pull-left" style="background-image:url(/content/images/2019/03/android-dev-weekly-issue-221.jpg)"></div>
				<div class="post-info"><h4 class="h5">Android 开发技术周报 Issue#221</h4><div class="date"><i class="material-icons">&#xE192;</i>March 25, 2019</div></div>
			</a>
		</div>
		<div class="recent-single-post clearfix have-image">
			<a href="/android-dev-weekly-issue-220/" class="post-title">
				<div class="post-thumb pull-left" style="background-image:url(/content/images/2019/03/android-dev-weekly-issue-220.jpg)"></div>
				<div class="post-info"><h4 class="h5">Android 开发技术周报 Issue#220</h4><div class="date"><i class="material-icons">&#xE192;</i>March 19, 2019</div></div>
			</a>
		</div>
	</div>
</div>
<!-- end widget -->				</div>
				<div class="col-sm-6 col-md-4">
					<div class="widget">
	<h4 class="title">标签云</h4>
	<div class="content tag-cloud">
		<a href="/tag/androiddevspecialweekly/">AndroidDevSpecialWeekly</a><a href="/tag/androiddevweekly/">AndroidDevWeekly</a><a href="/tag/jobs/">Jobs</a><a href="/tag/kotlin/">Kotlin</a><a href="/tag/reactnative/">ReactNative</a><a href="/tag/rxandroid/">RxAndroid</a><a href="/tag/rxjava/">RxJava</a>
	</div>
</div>
					<div class="widget">
	<h4 class="title">关注</h4>
	<div class="content clearfix">
		<ul class="social">
			<!-- start social links -->
			<!-- replace the # with your own profile link address -->
			<li><a href="http://weibo.com/234959219/" class="weibo"><i class="fa fa-weibo"></i></a></li>
			<li><a href="https://twitter.com/inferjay" class="twitter"><i class="fa fa-twitter"></i></a></li>
			<li><a href="https://plus.google.com/u/0/+HCZHANG" class="google-plus"><i class="fa fa-google-plus"></i></a></li>
			<li><a href="https://www.instagram.com/inferjay/"class="instagram"><i class="fa fa-instagram"></i></a></li>
			<li><a href="https://androidweekly.io/rss/" class="rss"><i class="fa fa-rss"></i></a></li>
			<!-- end social links -->
		</ul>
	</div>
</div>
					
				</div>
				<div class="col-sm-6 col-md-4">
					<!-- start widget -->
<div class="widget">
	<h4 class="title">关于</h4>
	<div class="content">
		汇集互联网上每周 Android 开发的技术文章、开源项目、开发工具、视频教程、Android 设计教程、设计资源等。
		推荐资源请<a href="">戳我</a>或者微博上转发并<a href="">@脉脉不嘚語</a>，欢迎大家推荐自己在 Android 开发过程中用的好用的工具、看到的好的技术文章、教程、用到设计素材。
	</div>
</div>
<!-- end widget -->
				</div>
			</div>
		</div>
	</div>
	<div class="footer-bottom copyright-area">
	<div class="container">
		<div class="row">
			<div class="col-md-12">
				<div class="copyright">
					&copy; 2019 <a href="https://androidweekly.io">Android 开发技术周报</a>. All right Reserved - Powered by <a href="http://ghost.org" target="blank">Ghost</a>
				</div>
			</div>
		</div>
	</div>
</div></footer>
<!-- end footer -->
<a href="#" id="back-to-top"><i class="material-icons">&#xE5CE;</i></a>
<div class="search-popup">
	<div class="close-button">
		<i class="material-icons">&#xE5C9;</i>
	</div>
	<div class="container popup-inner">
		<div class="row">
			<div class="col-sm-12">
				<form>
					<div class="input-group">
                        <input type="text" class="required" id="search-input">
                        <span class="bar"></span>
                        <label>输入你要搜索的关键字</label>
                    </div>
				</form>
				<div id="search-results">
				</div>
			</div>
		</div>
	</div>
</div><!-- add target attr to all a tag -->
 <script type="text/javascript">
        //bind a click
        var utm_info = "utm_source=androidweekly.io&utm_medium=website";
        $(document).bind('DOMNodeInserted', function(event) {
            $('.post-entry').find('a[href^="http"]').each(
                function(){
                    if (!$(this).attr('target')) {
                        $(this).attr('target', '_blank')
                    }
                    var url = $(this).attr('href');
                    if (url.indexOf("https://androidweekly.cn") != -1 || url.indexOf("https://androidweekly.io") != -1 || url.indexOf("https://www.androidweekly.io") != -1 || url.indexOf("https://www.androidweekly.cn") != -1) {
                        $(this).attr('target', '_self')
                    } else {
                        if (url.indexOf(utm_info) == -1) {
                          if (url.indexOf("&") == -1) {
                              if (url.indexOf("?") == -1 && url.indexOf("/?") == -1) {
                        		url += '?';
                              } else {
                              	url += '&';
                              }
                          } else {
                                url += '&';
                         }
                    	 url += utm_info;
                         $(this).attr('href', url);
                       }
                    }
                }
            );
        });
</script>
<!--
<script>
	$('#mc_embed_signup > form').remove();
    $('#message').text('Email 订阅入口暂时关闭，之后将不定期开放!!!').css({color: "#FF5722"});
</script>


<script>
	new SmoothScroll('a[href*="#"]', {easing: 'linear'});
</script>
-->

<!-- Start Google Analytics -->
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  ga('create', 'UA-52369435-3', 'auto');
  ga('send', 'pageview');
  var trackOutboundLink = function(url,category, action) {
    var redirectTriggered = false;
    ga('send', 'event', category, action, url, {'hitCallback':
        function() {
            redirectTriggered = true;
            window.open(url);
        }
    });
};
</script>
 <!-- End Google Analytics -->

<script>
    Array.prototype.randomDiffElement = function(last) {
        if (this.length == 0) {
            return;
        } else if (this.length == 1) {
            return this[0];
        } else {
            var num = 0;
            do {
                num = Math.floor(Math.random() * this.length);
            } while (Array.isArray(last) ? last.includes(this[num]) : this[num] == last);
            return this[num];
        }
    };
    var isShow = function isShow(value) {
        return value && value.isshow;
    };
    var buildLinkAndImageElement = function(item) {
        var link = '<a href="' + item.url + '" title="' + item.title + item.description + '" onclick="trackOutboundLink(\'' + item.url + '\', \'' + item.ad_config.category + "-" + item.ad_config.label + '\', \'' + item.ad_config.action + '\');" >';
        var imgClass;
        if (item.style.isRound) {
            imgClass = "carousel-inner img-responsive img-rounded"
        } else {
            imgClass = "carousel-inner img-responsive"
        }
        return '<li>' + link + '<img class="' + imgClass + '" src="' + item.img_url + '"></a></li>';
    };
    var buildDonateInfo = function(id, donate_info_list) {
        if (donate_info_list.title && donate_info_list.title.length > 0) {
            $(id).find('#donate-title').text(donate_info_list.title);
        } else {
            $(id).find('#donate-title').hide();
        }

        if (donate_info_list.description && donate_info_list.description.length > 0) {
            $(id).find('#donate-desc').append(donate_info_list.description);
        } else {
            $(id).find('#donate-desc').hide();
        }
        if (donate_info_list.data && donate_info_list.data.length > 0) {
            var donateInfoListBox = $(id).find('#donate-content');
            donate_info_list.data.forEach(function(item, index) {
                if (item.isshow) {
                    item.url = item.url ? item.url : "#";
                    var donate_info = '<a href="' + item.url + '" target="_blank" title="' + item.title + '"><img src="' + item.img_url + '" style="' + item.img_syle + '" /></a>'
                    var isAddBreakTag = donate_info_list.data[index + 1] && donate_info_list.data[index + 1].isshow;
                    if ((index + 1) % 2 == 0 && break_tag && break_tag.length > 0 && isAddBreakTag) {
                        donate_info += break_tag;
                    }
                    donateInfoListBox.append(donate_info);
                }
            });
        }
        $(id).show();
    };
    var buildJobInfoItem = function(job_item) {
        var job_info = '<p><a href="' + job_item.url + '" target="_blank">' + job_item.title + '</a></p><p>' + job_item.content + '</p>';
        return '<li>' + job_info + '</li>';
    };
    var buildBookItem = function(book) {
        var link = '<a href="' + book.url + '" target="_blank" title="' + book.title;
        link = link + (book.isad ? '" onclick="trackOutboundLink(\'' + book.url + '\', \'' + book.ad_config.category + "-" + book.ad_config.label + '\', \'' + book.ad_config.action + '\');" >' : '" >') + book.title;
        if (book.isShowCover && book.img_url) {
            var imgClass;
            if (book.style.isRound) {
                imgClass = "carousel-inner img-responsive img-rounded"
            } else {
                imgClass = "carousel-inner img-responsive"
            }
            link = link + '<img class="' + imgClass + '" src="' + book.img_url + '">';
        }
        return '<li><p>' + link + '</a></p><p>' + book.description + '</p></li>';
    };
    var buildEventItem = function(event) {
        var event_info = '<p><a href="' + event.url + '" target="_blank">' + event.title + '</a></p><p>' + event.description + '</p>';
        return '<li>' + event_info + '</li>';
    };
    var buildGreenAppInfoItem = function(app, utm_info) {
        var app_info = '<a href="' + (utm_info ? (app.url + utm_info) : app.url) + '" target="_blank"><center><img class="app-icon" src="' + app.icon + '"><span class="app-name">' + app.name + '</span><span class="app-description">' + app.description + '</span></center></a>';
        return '<li>' + app_info + '</li>';
    };
    var buildAppFriendLinkItem = function(app, utm_info) {
        var app_info = '<a href="' + (utm_info ? (app.downloadUrl + utm_info) : app.downloadUrl) + '" target="_blank" title="' + app.description + '"><center><img class="app-icon" src="' + app.iconUrl + '"><span class="app-name">' + app.appName + '</span></center></a>';
        return '<li>' + app_info + '</li>';
    };
    var weeklyApp = {
        initAdList: function() {
            if (isShowAdList && ad_list && ad_list.data && ad_list.data.length > 0) {
                if (ad_list.title && ad_list.title.length > 0) {
                    $("#ad-list-panel").find('.list-title').text(ad_list.title);
                } else {
                    $("#ad-list-panel").find('.list-title').hide();
                }
                var adListBox = $("#ad-list-panel ul");
                ad_list.data.forEach(function(item) {
                    if (item.isshow) {
                        adListBox.append(buildLinkAndImageElement(item));
                    }
                });
                if ($(adListBox).children()) {
                    $("#ad-list-panel").show();
                }
            }
        },
        initPostAdList: function() {
            if (isShowPostAdList && post_ad_list && post_ad_list.data && post_ad_list.data.length > 0) {
                if (post_ad_list.title && post_ad_list.title.length > 0) {
                    $("#post-ad-list-panel").find('.list-title').text(post_ad_list.title);
                } else {
                    $("#post-ad-list-panel").find('.list-title').hide();
                }
                var adListBox = $("#post-ad-list-panel ul");
                post_ad_list.data.forEach(function(item) {
                    if (item.isshow) {
                        adListBox.append(buildLinkAndImageElement(item));
                    }
                });
                if ($(adListBox).children()) {
                    $("#post-ad-list-panel").show();
                }
            }
        },
        initFuckGFWList: function() {
            if (isShowFuckGFWList && fuck_gfw_list && fuck_gfw_list.data && fuck_gfw_list.data.length > 0) {
                if (fuck_gfw_list.title && fuck_gfw_list.title.length > 0) {
                    $("#fuck-gfw-list-panel").find('.list-title').text(fuck_gfw_list.title);
                } else {
                    $("#fuck-gfw-list-panel").find('.list-title').hide();
                }
                var gfwListBox = $("#fuck-gfw-list-panel ul");
                fuck_gfw_list.data.forEach(function(item) {
                    if (item.isshow) {
                        gfwListBox.append(buildLinkAndImageElement(item));
                    }
                });
                if ($(gfwListBox).children()) {
                    $("#fuck-gfw-list-panel").show();
                }
            }
        },
        initDoanateInfoList: function() {
            if (isShowDonateInfoList && donate_info_list) {
                buildDonateInfo('#donate-info-panel', donate_info_list);
            }

            if (isShowPostDonateInfoList && post_donate_info_list) {
                buildDonateInfo('#post-donate-info-content', post_donate_info_list);
            }
        },
        initJobsInfoList: function() {
            if (isShowJobsInfoList && post_jobs_info_list) {
                if (post_jobs_info_list.title && post_jobs_info_list.title.length > 0) {
                    $("#post-jobs-info-list").find('#jobs-title').text(post_jobs_info_list.title);
                } else {
                    $("#post-jobs-info-list").find('#jobs-title').hide();
                }
                var jobsListBox = $("#post-jobs-info-list ol");
                post_jobs_info_list.data.forEach(function(job_item) {
                    if (job_item.isshow) {
                        jobsListBox.append(buildJobInfoItem(job_item));
                    }
                });
                if ($(jobsListBox).children()) {
                    $("#post-jobs-info-list").show();
                }
            }
        },
        initBookList: function() {
            if (isShowBookList && books) {
                if (books.title && books.title.length > 0) {
                    $("#post-book-list").find('#book-list-title').text(books.title);
                } else {
                    $("#post-book-list").find('#book-list-title').hide();
                }
                if (books.data && books.data.length > 0) {
                    var bookListBox = $('#post-book-list ol');
                    var lastRandomBook = [];
                    for (var i = 0; i < books.showCount; i++) {
                        var book = books.data.filter(isShow).randomDiffElement(lastRandomBook);
                        if (book) {
                            bookListBox.append(buildBookItem(book))
                        }
                        lastRandomBook.push(book);
                    }
                    if ($(bookListBox).children()) {
                        $('#post-book-list').show();
                    }
                }
            }
        },
        initEventList: function() {
            if (isShowEventList && evnets) {
                if (evnets.title && evnets.title.length > 0) {
                    $("#post-event-list").find('#event-list-title').text(evnets.title);
                } else {
                    $("#post-event-list").find('#event-list-title').hide();
                }
                if (evnets.data && evnets.data.length > 0) {
                    var eventListBox = $('#post-event-list ol');
                    evnets.data.filter(isShow).forEach(function(event) {
                        eventListBox.append(buildEventItem(event));
                    });
                    if ($(eventListBox).children()) {
                        $("#post-event-list").show();
                    }
                }
            }
        },
        initGreenAppList: function() {
            if (isShowGreenAppList) {
                if (greenapps) {
                    if (greenapps.title && greenapps.title.length > 0) {
                        $("#green-android-app-list").find('.list-title').text(greenapps.title);
                    } else {
                        $("#green-android-app-list").find('.list-title').hide();
                    }
                    if (greenapps.description && greenapps.description.length > 0) {
                        $("#green-android-app-list").find('.description').text(greenapps.description);
                    } else {
                        $("#green-android-app-list").find('.description').hide();
                    }
                    if (greenapps.url && greenapps.url_name) {
                        $("#green-android-app-list").find('#btn-join-green-android-plan').text(greenapps.url_name);
                        $("#green-android-app-list").find('#btn-join-green-android-plan').attr('href', greenapps.url)
                    } else {
                        $("#green-android-app-list").find('#btn-join-green-android-plan').hide();
                    }

                    if (greenapps.data && greenapps.data.length > 0) {
                        var appListBox = $('#green-android-app-list ul');
                        var lastRandomApp = [];
                        for (var i = 0; i < greenapps.showCount; i++) {
                            var app = greenapps.data.filter(isShow).randomDiffElement(lastRandomApp);
                            if (app) {
                                appListBox.append(buildGreenAppInfoItem(app, greenapps.utm_info))
                            }
                            lastRandomApp.push(app);
                        }
                        appListBox.append(buildGreenAppInfoItem(greenapps.more, greenapps.utm_info))
                        if ($(appListBox).children()) {
                            $('#green-android-app-list').show();
                        } else {
                            var parent = $('#green-android-app-list').parent();
                            $(parent).children('hr').hide();
                        }
                    }
                } else {
                    var parent = $('#green-android-app-list').parent();
                    $(parent).children('hr').hide();
                }
            } else {
                var parent = $('#green-android-app-list').parent();
                $(parent).children('hr').hide();
            }
        },
        initAppRecommendList: function() {
            if (isShowAppRecommendList && app_recommend_info && $("#android-app-friend-link-list")) {
                var host = window.location.host;
                if (host.endsWith("androidweekly.cn")){
                  	app_recommend_info.api_url += "?package_name=cn.androidweekly.website"
                } else {
                	app_recommend_info.api_url += "?package_name=xyz.androidweekly.website"
                }
                $.getJSON(app_recommend_info.api_url, function(data, status, xhr) {
                    if (status === 'success' && data && data.code === 100) {
                        if (app_recommend_info.title && app_recommend_info.title.length > 0) {
                            $("#android-app-friend-link-list").find('.list-title').append(app_recommend_info.title);
                        } else {
                            $("#android-app-friend-link-list").find('.list-title').hide();
                        }
                        if (app_recommend_info.logo_icon_url) {
                            $('#app-friend-link-logo-link').attr('href', app_recommend_info.logo_link);
                            $('#app-friend-link-logo').attr('src', app_recommend_info.logo_icon_url);
                        } else {
                            $('#app-friend-link-logo-link').hide();
                        }
                        if (app_recommend_info.description && app_recommend_info.description.length > 0) {
                            $("#android-app-friend-link-list").find('.description').append(app_recommend_info.description);
                        } else {
                            $("#android-app-friend-link-list").find('.description').hide();
                        }
                        if (app_recommend_info.btn_url && app_recommend_info.btn_name) {
                            $("#android-app-friend-link-list").find('#btn-join-app-friend-link-plan').append(app_recommend_info.btn_name);
                            $("#android-app-friend-link-list").find('#btn-join-app-friend-link-plan').attr('href', app_recommend_info.btn_url)
                        } else {
                            $("#android-app-friend-link-list").find('#btn-join-app-friend-link-plan').hide();
                        }
                        var appListBox = $('#android-app-friend-link-list ul');
                        var lastRandomApp = [];
                        var showCount = data.data.length <= app_recommend_info.showCount ? data.data.length : app_recommend_info.showCount;
                        for (var i = 0; i < showCount; i++) {
                            var app = data.data.randomDiffElement(lastRandomApp);
                            if (app) {
                                appListBox.append(buildAppFriendLinkItem(app, app_recommend_info.utm_info))
                            }
                            lastRandomApp.push(app);
                        }
                        if (appListBox.children()) {
                            $('#android-app-friend-link-list').show();
                        }
                    }
                });
            }
        },
        init: function() {
            weeklyApp.initAdList();
            weeklyApp.initPostAdList();
            weeklyApp.initFuckGFWList();
            weeklyApp.initDoanateInfoList();
            weeklyApp.initJobsInfoList();
            weeklyApp.initBookList();
            weeklyApp.initEventList();
            weeklyApp.initGreenAppList();
            weeklyApp.initAppRecommendList();
        }
    }

    /*===========================
    2. Initialization
    ==========================*/
    $(document).ready(function() {
        weeklyApp.init();
    });
</script>
<script src="https://cdn.jsdelivr.net/npm/algoliasearch@3/dist/algoliasearchLite.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/algoliasearch-helper@2.23.2/dist/algoliasearch.helper.min.js"></script>
<script>
    var applicationID = '1HJIZN5DIA';
	var apiKey = '936b8acf3a8d1dd7ea0cad3d011bd307';
	var indexName = 'weeklyIndex';
    
    var client = algoliasearch(applicationID, apiKey);
	var helper = algoliasearchHelper(client, indexName);
    
    helper.on('result', function(content) {
      renderHits(content);
    });

    function renderHits(content) {
      $('#search-results').html(function() {
        return $.map(content.hits, function(hit) {
          console.log(hit);
          return '<a href="' + hit.url + '">' + hit.title + '</a>';
        });
      });
    }
    
    $('#search-input').on('input propertychange', function() {
      var text = $(this).val();
      if (!text) {
          $('#search-results').empty();
      } else {
          helper.setQuery(text).search();
      }
    });
</script>
<link rel="stylesheet" href="https://imsun.github.io/gitment/style/default.css">
<script src="https://imsun.github.io/gitment/dist/gitment.browser.js"></script>
<!-- Commments JS代码 start -->
<script type="text/javascript">
	const gitment = new Gitment({
        id: window.location.pathname,
		owner: 'inferjay',
		repo: 'AndroidWeeklyComments',
		oauth: {
			client_id: '22c053614d5a5a3d0061',
			client_secret: 'e7ccd5f6daf26bc9b8aaf1ee7261cbbc008988d2',
		}
	})

	gitment.render('gitcomments')
</script>
<!-- Comments JS代码 end -->
<!-- scripts -->
<script type="text/javascript">
/* * * DON'T EDIT BELOW THIS LINE * * */
(function () {
    var s = document.createElement('script'); s.async = true;
    s.type = 'text/javascript';
    s.src = '//' + disqus_shortname + '.disqus.com/count.js';
    (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
</script>
<!-- 加载失败时加载本地的 -->
<script>
	if (!window.jQuery) {
		var script = document.createElement('script');
		script.src = "/assets/js/jquery/2.2.4/jquery.min.js?v=775cc42b9a";
		document.body.appendChild(script);
	}
</script> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="/assets/js/bootstrap.min.js?v=775cc42b9a"></script>
<script src="/assets/js/plugins.js?v=775cc42b9a"></script>
<script src="/assets/js/main.js?v=775cc42b9a"></script>
</body>
</html>